[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60223] trunk/blender/source/blender: Fix memory leak that still existed when opening . blend file mesh data in older

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Sep 18 20:55:12 CEST 2013


Revision: 60223
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60223
Author:   blendix
Date:     2013-09-18 18:55:12 +0000 (Wed, 18 Sep 2013)
Log Message:
-----------
Fix memory leak that still existed when opening .blend file mesh data in older
Blender versions, previous fix only solved it for newer versions.

Fix a memory leak in packed files.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/packedFile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c

Modified: trunk/blender/source/blender/blenkernel/intern/packedFile.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/packedFile.c	2013-09-18 17:09:28 UTC (rev 60222)
+++ trunk/blender/source/blender/blenkernel/intern/packedFile.c	2013-09-18 18:55:12 UTC (rev 60223)
@@ -219,6 +219,9 @@
 		if (read(file, data, filelen) == filelen) {
 			pf = newPackedFileMemory(data, filelen);
 		}
+		else {
+			MEM_freeN(data);
+		}
 
 		close(file);
 	}

Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c	2013-09-18 17:09:28 UTC (rev 60222)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c	2013-09-18 18:55:12 UTC (rev 60223)
@@ -1757,7 +1757,13 @@
 	if (data_tmp.external && !wd->current)
 		CustomData_external_write(&data_tmp, id, CD_MASK_MESH, count, 0);
 
+	for (i = 0; i < data_tmp.totlayer; i++)
+		data_tmp.layers[i].flag &= ~CD_FLAG_NOFREE;
+
 	writestruct_at_address(wd, DATA, "CustomDataLayer", data_tmp.maxlayer, data->layers, data_tmp.layers);
+ 
+	for (i = 0; i < data_tmp.totlayer; i++)
+		data_tmp.layers[i].flag |= CD_FLAG_NOFREE;
 
 	for (i = 0; i < data_tmp.totlayer; i++) {
 		CustomDataLayer *layer= &data_tmp.layers[i];




More information about the Bf-blender-cvs mailing list