mirror of https://github.com/ARMmbed/mbed-os.git
Old pointers of sibling were not cleared
When adding sibling at the head of linked list, the head if pointing to something in linked list was not updated, hence a loop was formed in linked list Element0 - First addition to linked list Element1 - Has higher delay hence added to back 0 ->(next) 1 Element2 - Delay is same as Element0, hence should be sibling of 0 Shall be added at head Expected: 2 ------------->(next) 1 |(sibling) 0 Bug: (Resolved with this) 2 ------------->(next) 1 |(sibling) 0 ------------->(next) 1 If we add more elements and next pointer of sibling is updated, old references will cause issues Element3 added Expected: 2 ------------->(next) 3 ------------->(next) 1 |(sibling) 0 Bug: (Resolved with this) 2 ------------->(next) 3 ------------->(next) 1 |(sibling) 0 ------------->(next) 1 ***Both siblings here point to different next***pull/9144/head
parent
0a832dd6e0
commit
b893d5681f
|
@ -239,8 +239,8 @@ static int equeue_enqueue(equeue_t *q, struct equeue_event *e, unsigned tick)
|
|||
if (e->next) {
|
||||
e->next->ref = &e->next;
|
||||
}
|
||||
|
||||
e->sibling = *p;
|
||||
e->sibling->next = 0;
|
||||
e->sibling->ref = &e->sibling;
|
||||
} else {
|
||||
e->next = *p;
|
||||
|
|
Loading…
Reference in New Issue