SF.net SVN: geany:[3246] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Tue Nov 18 17:24:10 UTC 2008


Revision: 3246
          http://geany.svn.sourceforge.net/geany/?rev=3246&view=rev
Author:   ntrel
Date:     2008-11-18 17:24:10 +0000 (Tue, 18 Nov 2008)

Log Message:
-----------
Update utils_free_pointers().

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/plugins/classbuilder.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2008-11-18 17:14:00 UTC (rev 3245)
+++ trunk/ChangeLog	2008-11-18 17:24:10 UTC (rev 3246)
@@ -1,4 +1,4 @@
-2008-11-16  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
+2008-11-18  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * src/notebook.c:
    Remove forced size requests for the tab close icon as it seems not
@@ -17,6 +17,8 @@
    src/project.c, src/search.c, src/editor.c:
    Make utils_free_pointers() take an arg_count argument to prevent
    memory leaks.
+ * plugins/classbuilder.c:
+   Update utils_free_pointers().
 
 
 2008-11-16  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>

Modified: trunk/plugins/classbuilder.c
===================================================================
--- trunk/plugins/classbuilder.c	2008-11-18 17:14:00 UTC (rev 3245)
+++ trunk/plugins/classbuilder.c	2008-11-18 17:24:10 UTC (rev 3246)
@@ -223,27 +223,24 @@
 static void cc_dlg_on_create_class(CreateClassDialog *cc_dlg);
 
 
-/* I don't want this to be in the plugin API because it can cause leaks if any pointers
- * are NULL -ntrel. */
-/* Frees all passed pointers if they are *ALL* non-NULL.
- * Do not use if any pointers may be NULL.
- * The first argument is nothing special, it will also be freed.
- * The list must be ended with NULL. */
+/* The list must be ended with NULL as an extra check that arg_count is correct. */
 static void
-utils_free_pointers(gpointer first, ...)
+utils_free_pointers(gsize arg_count, ...)
 {
 	va_list a;
-	gpointer sa;
+	gsize i;
+	gpointer ptr;
 
-    for (va_start(a, first);  (sa = va_arg(a, gpointer), sa!=NULL);)
-    {
-    	if (sa != NULL)
-    		g_free(sa);
+	va_start(a, arg_count);
+	for (i = 0; i < arg_count; i++)
+	{
+		ptr = va_arg(a, gpointer);
+		g_free(ptr);
 	}
+	ptr = va_arg(a, gpointer);
+	if (ptr)
+		g_warning("Wrong arg_count!");
 	va_end(a);
-
-    if (first != NULL)
-    	g_free(first);
 }
 
 
@@ -748,7 +745,7 @@
 		g_free(text);
 	}
 
-	utils_free_pointers(tmp, class_info->class_name, class_info->class_name_up,
+	utils_free_pointers(17, tmp, class_info->class_name, class_info->class_name_up,
 		class_info->base_name, class_info->class_name_low, class_info->base_include,
 		class_info->header, class_info->header_guard, class_info->source, class_info->base_decl,
 		class_info->constructor_decl, class_info->constructor_impl,


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list