#include <xml/glist.h>

/*
   see discussion on gtk-list@gnome.org ... 
  
   the g_list_free_1 function is an optimization of calling
   xml_g_list_delete_link (list,list) which is essentially
   xml_g_list_delete_head which then again has no equivalent
   within the glib world and in all other respects it is 
   appraised that free_1 should only be called on nodes that
   are unlinked anyway where in fact it often isn't. Well,
   here we call it "free_head" - it returns a list where the
   new head may have a invalid nonnull ->prev. Handle with care.
 */
xml_GList* xml_g_list_free_head (xml_GList* list)
{ 
# if 0
    return xml_g_list_delete_link (list, list);
# else
    register xml_GList* tail = list;
    if (tail) 
{ tail = tail->next; xml_g_list_free_1 (list); }
return tail; # endif }
/* 
   Local variables:
   c-file-style: "stroustrup"
   End:
 */