[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28572] branches/render25/source/blender/ blenlib: ghash debug mode, compile with GHASH_DEBUG_LEAKS defined and ghash will append the file/ line BLI_ghash_new was called from to the tag str it passed to MEM_mallocN

Joseph Eagar joeedh at gmail.com
Tue May 4 15:36:33 CEST 2010


Revision: 28572
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28572
Author:   joeedh
Date:     2010-05-04 15:36:32 +0200 (Tue, 04 May 2010)

Log Message:
-----------
ghash debug mode, compile with GHASH_DEBUG_LEAKS defined and ghash will append the file/line BLI_ghash_new was called from to the tag str it passed to MEM_mallocN

Modified Paths:
--------------
    branches/render25/source/blender/blenlib/BLI_ghash.h
    branches/render25/source/blender/blenlib/intern/BLI_ghash.c

Modified: branches/render25/source/blender/blenlib/BLI_ghash.h
===================================================================
--- branches/render25/source/blender/blenlib/BLI_ghash.h	2010-05-04 12:31:24 UTC (rev 28571)
+++ branches/render25/source/blender/blenlib/BLI_ghash.h	2010-05-04 13:36:32 UTC (rev 28572)
@@ -63,6 +63,9 @@
 	
 	Entry **buckets;
 	struct BLI_mempool *entrypool;
+#ifdef GHASH_DEBUG_LEAKS
+	const char *tag;
+#endif
 	int nbuckets, nentries, cursize;
 } GHash;
 
@@ -72,7 +75,12 @@
 	struct Entry *curEntry;
 } GHashIterator;
 
-GHash*	BLI_ghash_new		(GHashHashFP hashfp, GHashCmpFP cmpfp);
+#ifndef GHASH_DEBUG_LEAKS
+	GHash*	BLI_ghash_new		(GHashHashFP hashfp, GHashCmpFP cmpfp);
+#else
+	GHash *_BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, char *file, int line);
+	#define BLI_ghash_new(hashfp, cmpfp) _BLI_ghash_new(hashfp, cmpfp, __FILE__, __LINE__)
+#endif
 void	BLI_ghash_free		(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp);
 
 //BM_INLINE void	BLI_ghash_insert	(GHash *gh, void *key, void *val);

Modified: branches/render25/source/blender/blenlib/intern/BLI_ghash.c
===================================================================
--- branches/render25/source/blender/blenlib/intern/BLI_ghash.c	2010-05-04 12:31:24 UTC (rev 28571)
+++ branches/render25/source/blender/blenlib/intern/BLI_ghash.c	2010-05-04 13:36:32 UTC (rev 28572)
@@ -45,8 +45,20 @@
 
 /***/
 
+#ifdef GHASH_DEBUG_LEAKS
+GHash *_BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, char *file, int line) {
+	const char *str = calloc(1, strlen(file) + 32);
+	GHash *gh;
+
+	sprintf(str, "GHash@%s:%d", file, line);
+
+	gh = MEM_mallocN(sizeof(*gh), str);
+	gh->tag = str;
+
+#else
 GHash *BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp) {
 	GHash *gh= MEM_mallocN(sizeof(*gh), "GHash");
+#endif
 	gh->hashfp= hashfp;
 	gh->cmpfp= cmpfp;
 	gh->entrypool = BLI_mempool_create(sizeof(Entry), 64, 64, 0);
@@ -93,6 +105,10 @@
 	gh->nentries = 0;
 	gh->nbuckets = 0;
 	MEM_freeN(gh);
+
+#ifdef GHASH_DEBUG_LEAKS
+	free(gh->tag);
+#endif
 }
 
 /***/





More information about the Bf-blender-cvs mailing list