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