diff options
-rw-r--r-- | src/bluetooth-tds.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/bluetooth-tds.c b/src/bluetooth-tds.c index 751680d..5459e80 100644 --- a/src/bluetooth-tds.c +++ b/src/bluetooth-tds.c @@ -635,8 +635,12 @@ int _bt_tds_parse_transport_blocks(bt_tds_transport_block_list_s **info, if (info_list != NULL) { (*info)->data = (tds_transport_data_s **)g_malloc0(g_slist_length(info_list) * sizeof(tds_transport_data_s *)); - for (l = info_list, k = 0; l; l = g_slist_next(l), k++) - (*info)->data[k] = (tds_transport_data_s*)l->data; + k = 0; + while (info_list) { + l = info_list; + (*info)->data[k++] = (tds_transport_data_s*)l->data; + info_list = g_slist_remove(info_list, l->data); + } return BT_ERROR_NONE; } return BT_ERROR_NO_DATA; |