[Bf-blender-cvs] [6adc839] asset-engine: Fix stupid freeing issues.

Bastien Montagne noreply at git.blender.org
Mon Apr 13 17:27:59 CEST 2015


Commit: 6adc839e40d43ce7b4cc565f9da413995e02c6ae
Author: Bastien Montagne
Date:   Mon Apr 13 16:20:24 2015 +0200
Branches: asset-engine
https://developer.blender.org/rB6adc839e40d43ce7b4cc565f9da413995e02c6ae

Fix stupid freeing issues.

===================================================================

M	source/blender/blenkernel/intern/asset.c

===================================================================

diff --git a/source/blender/blenkernel/intern/asset.c b/source/blender/blenkernel/intern/asset.c
index a4d6faf..5c3fe3c 100644
--- a/source/blender/blenkernel/intern/asset.c
+++ b/source/blender/blenkernel/intern/asset.c
@@ -188,6 +188,7 @@ void BKE_filedir_revision_free(FileDirEntryRevision *rev)
 	if (rev->comment) {
 		MEM_freeN(rev->comment);
 	}
+	MEM_freeN(rev);
 }
 
 void BKE_filedir_variant_free(FileDirEntryVariant *var)
@@ -200,14 +201,16 @@ void BKE_filedir_variant_free(FileDirEntryVariant *var)
 	}
 
 	if (!BLI_listbase_is_empty(&var->revisions)) {
-		FileDirEntryRevision *rev;
+		FileDirEntryRevision *rev, *rev_next;
 
-		for (rev = var->revisions.first; rev; rev = rev->next) {
+		for (rev = var->revisions.first; rev; rev = rev_next) {
+			rev_next = rev->next;
 			BKE_filedir_revision_free(rev);
 		}
 
-		BLI_freelistN(&var->revisions);
+		BLI_listbase_clear(&var->revisions);
 	}
+	MEM_freeN(var);
 }
 
 void BKE_filedir_entry_clear(FileDirEntry *entry)
@@ -227,13 +230,14 @@ void BKE_filedir_entry_clear(FileDirEntry *entry)
 	/* For now, consider FileDirEntryRevision::poin as not owned here, so no need to do anything about it */
 
 	if (!BLI_listbase_is_empty(&entry->variants)) {
-		FileDirEntryVariant *var;
+		FileDirEntryVariant *var, *var_next;
 
-		for (var = entry->variants.first; var; var = var->next) {
+		for (var = entry->variants.first; var; var = var_next) {
+			var_next = var->next;
 			BKE_filedir_variant_free(var);
 		}
 
-		BLI_freelistN(&entry->variants);
+		BLI_listbase_clear(&entry->variants);
 	}
 	else if (entry->entry){
 		MEM_freeN(entry->entry);
@@ -319,9 +323,10 @@ FileDirEntry *BKE_filedir_entry_copy(FileDirEntry *entry)
 
 void BKE_filedir_entryarr_clear(FileDirEntryArr *array)
 {
-	FileDirEntry *entry;
+	FileDirEntry *entry, *entry_next;
 
-	for (entry = array->entries.first; entry; entry = entry->next) {
+	for (entry = array->entries.first; entry; entry = entry_next) {
+		entry_next = entry->next;
 		BKE_filedir_entry_free(entry);
 	}
 	BLI_listbase_clear(&array->entries);




More information about the Bf-blender-cvs mailing list