Skip to content

Commit 0494606

Browse files
author
Juha Heiskanen
committed
Adapatation layer unicast list entry free update
Added new parameter for reject fragmented buffer unnesessary free. Change-Id: Ifa5bd09ea7759aa4fb942d59d7d5d273e85ff4e9
1 parent 4481e86 commit 0494606

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

source/6LoWPAN/adaptation_interface.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -328,10 +328,14 @@ static void lowpan_list_entry_free(fragmenter_tx_list_t *list, fragmenter_tx_ent
328328
ns_dyn_mem_free(entry);
329329
}
330330

331-
static void lowpan_list_free(fragmenter_tx_list_t *list)
331+
static void lowpan_list_free(fragmenter_tx_list_t *list, bool fragment_buf_free)
332332
{
333333
while (!ns_list_is_empty(list)) {
334334
fragmenter_tx_entry_t *entry = ns_list_get_first(list);
335+
if (!fragment_buf_free) {
336+
//We can't free this pointer becuase it must be until interface is deleted
337+
entry->fragmenter_buf = NULL;
338+
}
335339
lowpan_list_entry_free(list, entry);
336340
}
337341
}
@@ -388,11 +392,11 @@ int8_t lowpan_adaptation_interface_free(int8_t interface_id)
388392

389393
ns_list_remove(&fragmenter_interface_list, interface_ptr);
390394
//free active tx process
391-
lowpan_list_free(&interface_ptr->activeUnicastList);
395+
lowpan_list_free(&interface_ptr->activeUnicastList, false);
392396
lowpan_active_buffer_state_reset(&interface_ptr->active_broadcast_tx_buf);
393397

394398
//Free Indirect entry
395-
lowpan_list_free(&interface_ptr->indirect_tx_queue);
399+
lowpan_list_free(&interface_ptr->indirect_tx_queue, true);
396400

397401
buffer_free_list(&interface_ptr->directTxQueue);
398402

@@ -413,13 +417,13 @@ int8_t lowpan_adaptation_interface_reset(int8_t interface_id)
413417
}
414418

415419
//free active tx process
416-
lowpan_list_free(&interface_ptr->activeUnicastList);
420+
lowpan_list_free(&interface_ptr->activeUnicastList, false);
417421
lowpan_active_buffer_state_reset(&interface_ptr->active_broadcast_tx_buf);
418422
//Clean fragmented message flag
419423
interface_ptr->fragmenter_active = false;
420424

421425
//Free Indirect entry
422-
lowpan_list_free(&interface_ptr->indirect_tx_queue);
426+
lowpan_list_free(&interface_ptr->indirect_tx_queue, true);
423427

424428
buffer_free_list(&interface_ptr->directTxQueue);
425429

0 commit comments

Comments
 (0)