[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55288] trunk/blender/source/blender/ blenlib: BLI_linklist_free() was incorrectly taking MEM_freeN() as an argument, evidentially this works on x86 - but could cause issues later on.

Campbell Barton ideasman42 at gmail.com
Thu Mar 14 20:40:43 CET 2013


Revision: 55288
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55288
Author:   campbellbarton
Date:     2013-03-14 19:40:42 +0000 (Thu, 14 Mar 2013)
Log Message:
-----------
BLI_linklist_free() was incorrectly taking MEM_freeN() as an argument, evidentially this works on x86 - but could cause issues later on.
add BLI_linklist_freeN() which MEM_freeN's each item.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/BLI_linklist.h
    trunk/blender/source/blender/blenlib/intern/BLI_linklist.c
    trunk/blender/source/blender/blenlib/intern/BLI_memarena.c
    trunk/blender/source/blender/blenlib/intern/storage.c

Modified: trunk/blender/source/blender/blenlib/BLI_linklist.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_linklist.h	2013-03-14 18:44:32 UTC (rev 55287)
+++ trunk/blender/source/blender/blenlib/BLI_linklist.h	2013-03-14 19:40:42 UTC (rev 55288)
@@ -59,6 +59,7 @@
 void    BLI_linklist_insert_after(struct LinkNode **listp, void *ptr);
 
 void    BLI_linklist_free(struct LinkNode *list, LinkNodeFreeFP freefunc);
+void    BLI_linklist_freeN(struct LinkNode *list);
 void    BLI_linklist_apply(struct LinkNode *list, LinkNodeApplyFP applyfunc, void *userdata);
 
 #endif

Modified: trunk/blender/source/blender/blenlib/intern/BLI_linklist.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/BLI_linklist.c	2013-03-14 18:44:32 UTC (rev 55287)
+++ trunk/blender/source/blender/blenlib/intern/BLI_linklist.c	2013-03-14 19:40:42 UTC (rev 55288)
@@ -155,6 +155,18 @@
 	}
 }
 
+void BLI_linklist_freeN(LinkNode *list)
+{
+	while (list) {
+		LinkNode *next = list->next;
+
+		MEM_freeN(list->link);
+		MEM_freeN(list);
+
+		list = next;
+	}
+}
+
 void BLI_linklist_apply(LinkNode *list, LinkNodeApplyFP applyfunc, void *userdata)
 {
 	for (; list; list = list->next)

Modified: trunk/blender/source/blender/blenlib/intern/BLI_memarena.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/BLI_memarena.c	2013-03-14 18:44:32 UTC (rev 55287)
+++ trunk/blender/source/blender/blenlib/intern/BLI_memarena.c	2013-03-14 19:40:42 UTC (rev 55288)
@@ -74,7 +74,7 @@
 
 void BLI_memarena_free(MemArena *ma)
 {
-	BLI_linklist_free(ma->bufs, (void (*)(void *))MEM_freeN);
+	BLI_linklist_freeN(ma->bufs);
 	MEM_freeN(ma);
 }
 

Modified: trunk/blender/source/blender/blenlib/intern/storage.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/storage.c	2013-03-14 18:44:32 UTC (rev 55287)
+++ trunk/blender/source/blender/blenlib/intern/storage.c	2013-03-14 19:40:42 UTC (rev 55288)
@@ -616,7 +616,7 @@
  */
 void BLI_file_free_lines(LinkNode *lines)
 {
-	BLI_linklist_free(lines, (void (*)(void *))MEM_freeN);
+	BLI_linklist_freeN(lines);
 }
 
 /** is file1 older then file2 */




More information about the Bf-blender-cvs mailing list