[Bf-blender-cvs] [2a4fe88c13a] master: Cleanup: Use guarded allocator for data-block names returned from file reading

Julian Eisel noreply at git.blender.org
Tue Dec 8 13:02:34 CET 2020


Commit: 2a4fe88c13a1cb5bd79787e17eeaafec01c4d294
Author: Julian Eisel
Date:   Tue Dec 8 12:56:11 2020 +0100
Branches: master
https://developer.blender.org/rB2a4fe88c13a1cb5bd79787e17eeaafec01c4d294

Cleanup: Use guarded allocator for data-block names returned from file reading

Direcly using the C library allocator functions is usually avoided in favor of
our guarded allocator. It's more useful when debugging.

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

M	source/blender/blenloader/intern/blend_validate.c
M	source/blender/blenloader/intern/readblenentry.c
M	source/blender/editors/space_file/filelist.c
M	source/blender/imbuf/intern/thumbs_blend.c
M	source/blender/python/intern/bpy_library_load.c

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

diff --git a/source/blender/blenloader/intern/blend_validate.c b/source/blender/blenloader/intern/blend_validate.c
index 2848aac2c77..9b42e2d5f40 100644
--- a/source/blender/blenloader/intern/blend_validate.c
+++ b/source/blender/blenloader/intern/blend_validate.c
@@ -148,7 +148,7 @@ bool BLO_main_validate_libraries(Main *bmain, ReportList *reports)
         }
       }
 
-      BLI_linklist_free(names, free);
+      BLI_linklist_free(names, MEM_freeN);
     }
 
     BLO_blendhandle_close(bh);
diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c
index 7a527b82e9f..1aecba5ba90 100644
--- a/source/blender/blenloader/intern/readblenentry.c
+++ b/source/blender/blenloader/intern/readblenentry.c
@@ -134,7 +134,7 @@ void BLO_blendhandle_print_sizes(BlendHandle *bh, void *fp)
  * \param bh: The blendhandle to access.
  * \param ofblocktype: The type of names to get.
  * \param tot_names: The length of the returned list.
- * \return A BLI_linklist of strings. The string links should be freed with malloc.
+ * \return A BLI_linklist of strings. The string links should be freed with #MEM_freeN().
  */
 LinkNode *BLO_blendhandle_get_datablock_names(BlendHandle *bh, int ofblocktype, int *tot_names)
 {
@@ -147,7 +147,7 @@ LinkNode *BLO_blendhandle_get_datablock_names(BlendHandle *bh, int ofblocktype,
     if (bhead->code == ofblocktype) {
       const char *idname = blo_bhead_id_name(fd, bhead);
 
-      BLI_linklist_prepend(&names, strdup(idname + 2));
+      BLI_linklist_prepend(&names, BLI_strdup(idname + 2));
       tot++;
     }
     else if (bhead->code == ENDB) {
@@ -254,7 +254,7 @@ LinkNode *BLO_blendhandle_get_previews(BlendHandle *bh, int ofblocktype, int *to
  * (e.g. "Scene", "Mesh", "Light", etc.).
  *
  * \param bh: The blendhandle to access.
- * \return A BLI_linklist of strings. The string links should be freed with malloc.
+ * \return A BLI_linklist of strings. The string links should be freed with #MEM_freeN().
  */
 LinkNode *BLO_blendhandle_get_linkable_groups(BlendHandle *bh)
 {
@@ -272,7 +272,7 @@ LinkNode *BLO_blendhandle_get_linkable_groups(BlendHandle *bh)
         const char *str = BKE_idtype_idcode_to_name(bhead->code);
 
         if (BLI_gset_add(gathered, (void *)str)) {
-          BLI_linklist_prepend(&names, strdup(str));
+          BLI_linklist_prepend(&names, BLI_strdup(str));
         }
       }
     }
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 9e51b6ca4ba..b6d016aca7c 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -2620,7 +2620,7 @@ static int filelist_readjob_list_lib(const char *root, ListBase *entries, const
     nbr_entries++;
   }
 
-  BLI_linklist_free(names, free);
+  BLI_linklist_free(names, MEM_freeN);
 
   return nbr_entries;
 }
diff --git a/source/blender/imbuf/intern/thumbs_blend.c b/source/blender/imbuf/intern/thumbs_blend.c
index 1d0964ebb62..a338ea599f8 100644
--- a/source/blender/imbuf/intern/thumbs_blend.c
+++ b/source/blender/imbuf/intern/thumbs_blend.c
@@ -68,7 +68,7 @@ ImBuf *IMB_thumb_load_blend(const char *blen_path, const char *blen_group, const
         printf("%s: error, found %d items, %d previews\n", __func__, nnames, nprevs);
       }
       BLI_linklist_free(previews, BKE_previewimg_freefunc);
-      BLI_linklist_free(names, free);
+      BLI_linklist_free(names, MEM_freeN);
       return ima;
     }
 
@@ -93,7 +93,7 @@ ImBuf *IMB_thumb_load_blend(const char *blen_path, const char *blen_group, const
     }
 
     BLI_linklist_free(previews, BKE_previewimg_freefunc);
-    BLI_linklist_free(names, free);
+    BLI_linklist_free(names, MEM_freeN);
   }
   else {
     BlendThumbnail *data;
diff --git a/source/blender/python/intern/bpy_library_load.c b/source/blender/python/intern/bpy_library_load.c
index bc3d8b2c360..64590827933 100644
--- a/source/blender/python/intern/bpy_library_load.c
+++ b/source/blender/python/intern/bpy_library_load.c
@@ -44,6 +44,8 @@
 
 #include "BLO_readfile.h"
 
+#include "MEM_guardedalloc.h"
+
 #include "bpy_capi_utils.h"
 #include "bpy_library.h"
 
@@ -225,7 +227,7 @@ static PyObject *_bpy_names(BPy_Library *self, int blocktype)
       PyList_SET_ITEM(list, counter, PyUnicode_FromString((char *)l->link));
       counter++;
     }
-    BLI_linklist_free(names, free); /* free linklist *and* each node's data */
+    BLI_linklist_free(names, MEM_freeN); /* free linklist *and* each node's data */
   }
 
   return list;



More information about the Bf-blender-cvs mailing list