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/9208/head
deepikabhavnani 2018-12-18 17:12:10 -06:00 committed by Cruz Monrreal II
parent e06b7863cc
commit fa39d6ffe7
1 changed files with 1 additions and 1 deletions

View File

@ -239,8 +239,8 @@ static int equeue_enqueue(equeue_t *q, struct equeue_event *e, unsigned tick)
if (e->next) { if (e->next) {
e->next->ref = &e->next; e->next->ref = &e->next;
} }
e->sibling = *p; e->sibling = *p;
e->sibling->next = 0;
e->sibling->ref = &e->sibling; e->sibling->ref = &e->sibling;
} else { } else {
e->next = *p; e->next = *p;