commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gnue/geas/src/classdef depend.c


From: Reinhard Mueller
Subject: gnue/geas/src/classdef depend.c
Date: Wed, 19 Sep 2001 16:04:21 -0400

CVSROOT:        /cvsroot/gnue
Module name:    gnue
Changes by:     Reinhard Mueller <address@hidden>       01/09/19 16:04:21

Modified files:
        geas/src/classdef: depend.c 

Log message:
        Added some assertions, and added code for freeing memory in case not 
everything has been processed

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/gnue/gnue/geas/src/classdef/depend.c.diff?tr1=1.1&tr2=1.2&r1=text&r2=text

Patches:
Index: gnue/geas/src/classdef/depend.c
diff -u gnue/geas/src/classdef/depend.c:1.1 gnue/geas/src/classdef/depend.c:1.2
--- gnue/geas/src/classdef/depend.c:1.1 Sun Sep 16 16:54:29 2001
+++ gnue/geas/src/classdef/depend.c     Wed Sep 19 16:04:21 2001
@@ -19,7 +19,7 @@
    along with GEAS; if not, write to the Free Software Foundation, Inc.,
    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-   $Id: depend.c,v 1.1 2001/09/16 20:54:29 reinhard Exp $
+   $Id: depend.c,v 1.2 2001/09/19 20:04:21 reinhard Exp $
 */
 
 #include "config.h"
@@ -127,6 +127,7 @@
   struct _iteminfo *fi;
 
   g_return_if_fail (item);
+  g_return_if_fail (_to_resolve);
 
   fi = g_new0 (struct _iteminfo, 1);
   fi->item = g_strdup (item);
@@ -143,6 +144,7 @@
 
   g_return_if_fail (before);
   g_return_if_fail (after);
+  g_return_if_fail (_to_resolve);
 
   bef_ii = g_hash_table_lookup (_to_resolve, before);
   if (!bef_ii)
@@ -169,6 +171,8 @@
   unsigned int removed;
   unsigned int result;
 
+  g_return_val_if_fail (_to_resolve, 0);
+
   /* First create a list of the resolvable items:
      If an item has zero unresolved dependencies, it is moved to the
      _is_resolved list, and for all other items that depend on this one,
@@ -242,10 +246,34 @@
 }
 
 /* ------------------------------------------------------------------------- *\
- * Free all used memory
+ * Free all used memory in case something has not been processed
 \* ------------------------------------------------------------------------- */
 void
 _geas_cd_depend_done (void)
 {
-  /* TODO: Free everything in case something was not processed */
+  GList *l;
+
+  /* In case _geas_cd_depend_sort has not yet been called */
+  if (_to_resolve)
+    {
+      _geas_cd_depend_sort ();
+    }
+
+  /* Free all filenames */
+  l = g_list_first (_resolved);
+  while (l)
+    {
+      g_free (l->data);
+      l = g_list_next (l);
+    }
+  l = g_list_first (_unresolved);
+  while (l)
+    {
+      g_free (l->data);
+      l = g_list_next (l);
+    }
+
+  /* Free the list themselves */
+  g_list_free (_resolved);
+  g_list_free (_unresolved);
 }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]