[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58711] branches/soc-2013-depsgraph_mt/ source/blender/blenlib/intern/BLI_mempool.c: Added check for address being freed by mempool free

Sergey Sharybin sergey.vfx at gmail.com
Mon Jul 29 08:49:18 CEST 2013


Revision: 58711
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58711
Author:   nazgul
Date:     2013-07-29 06:49:18 +0000 (Mon, 29 Jul 2013)
Log Message:
-----------
Added check for address being freed by mempool free

When blender is built in debug mode, BLI_mempool_free will
ensure address passed to the function actually belongs to
this pool.

Modified Paths:
--------------
    branches/soc-2013-depsgraph_mt/source/blender/blenlib/intern/BLI_mempool.c

Modified: branches/soc-2013-depsgraph_mt/source/blender/blenlib/intern/BLI_mempool.c
===================================================================
--- branches/soc-2013-depsgraph_mt/source/blender/blenlib/intern/BLI_mempool.c	2013-07-29 06:49:11 UTC (rev 58710)
+++ branches/soc-2013-depsgraph_mt/source/blender/blenlib/intern/BLI_mempool.c	2013-07-29 06:49:18 UTC (rev 58711)
@@ -258,6 +258,22 @@
 {
 	BLI_freenode *newhead = addr;
 
+#ifndef NDEBUG
+	{
+		BLI_mempool_chunk *chunk;
+		bool found = false;
+		for (chunk = pool->chunks.first; chunk; chunk = chunk->next) {
+			if ((char*)addr >= (char*)chunk->data && (char*)addr < (char*)chunk->data + pool->csize) {
+				found = true;
+				break;
+			}
+		}
+		if (!found) {
+			BLI_assert(!"Attempt to free data which is not in pool.\n");
+		}
+	}
+#endif
+
 	if (pool->flag & BLI_MEMPOOL_ALLOW_ITER) {
 #ifndef NDEBUG
 		/* this will detect double free's */




More information about the Bf-blender-cvs mailing list