[Top][All Lists]
[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);
}
- gnue/geas/src/classdef depend.c,
Reinhard Mueller <=