[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