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.