diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-09-18 22:55:12 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2013-09-18 22:55:12 +0400 |
commit | 996add7885a3f5908c9315948c0cf147584174ea (patch) | |
tree | c5cdca92af636d6b7ba0b32f6613689587a4a5f3 /source | |
parent | 31acf4262df27ee99cd4547a75bddf7a52b420cb (diff) |
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.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/packedFile.c | 3 | ||||
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/packedFile.c b/source/blender/blenkernel/intern/packedFile.c index 62ea16b9fb4..5c2789a2c1c 100644 --- a/source/blender/blenkernel/intern/packedFile.c +++ b/source/blender/blenkernel/intern/packedFile.c @@ -219,6 +219,9 @@ PackedFile *newPackedFile(ReportList *reports, const char *filename, const char if (read(file, data, filelen) == filelen) { pf = newPackedFileMemory(data, filelen); } + else { + MEM_freeN(data); + } close(file); } diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 875e9cb6871..21136f0ca6d 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -1757,7 +1757,13 @@ static void write_customdata(WriteData *wd, ID *id, int count, CustomData *data, 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]; |