On 27/07/2015 12:56, Aurelien Jarno wrote: > temps[dst].next_copy = temps[src].next_copy; > temps[dst].prev_copy = src; > temps[temps[dst].next_copy].prev_copy = dst; > temps[src].next_copy = dst;
This is: dst->next = src->next; dst->prev = src; dst->next->prev = dst; src->next = dst; which seems weird. I think it should be one of /* splice src after dst */ dst->next->prev = src->prev; src->prev->next = dst->next; dst->next = src; src->prev = dst; or /* splice src before dst */ last = src->prev; dst->prev->next = src; src->prev = dst->prev; last->next = dst; dst->prev = last; (written as pointer manipulations for clarity). Maybe I'm missing the obvious, but if it's a problem it's better to fix it before the links are used more pervasively. Paolo