On Jul 2, 2016 9:52 AM, "Rob Clark" <robdcl...@gmail.com> wrote: > > Before, it would happily copy list_head next/prev (ie. pointer to the > *from* list_head), leaving things in a confused state and causing much > mayhem.
Heh, so it would... Thanks for fixing that. Reviewed-by: Jason Ekstrand <ja...@jlekstrand.net> > Signed-off-by: Rob Clark <robdcl...@gmail.com> > --- > src/util/list.h | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/src/util/list.h b/src/util/list.h > index f0dec5d..e8a99ac 100644 > --- a/src/util/list.h > +++ b/src/util/list.h > @@ -71,12 +71,18 @@ static inline void list_addtail(struct list_head *item, struct list_head *list) > list->prev = item; > } > > +static inline bool list_empty(struct list_head *list); > + > static inline void list_replace(struct list_head *from, struct list_head *to) > { > - to->prev = from->prev; > - to->next = from->next; > - from->next->prev = to; > - from->prev->next = to; > + if (list_empty(from)) { > + list_inithead(to); > + } else { > + to->prev = from->prev; > + to->next = from->next; > + from->next->prev = to; > + from->prev->next = to; > + } > } > > static inline void list_del(struct list_head *item) > -- > 2.7.4 >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev