GS_List * gslist_reverse(GSList *list) should not modify list. Patch fixes it. In case you think it should, (or it's irrelevant) it can be done with one less variable, just remove the GSList *tmp declaration and use list where tmp is used.