Revision: 20465
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20465
Author:   joeedh
Date:     2009-05-28 06:59:04 +0200 (Thu, 28 May 2009)

Log Message:
-----------
ok should work now

Modified Paths:
--------------
    branches/bmesh/blender/intern/guardedalloc/intern/mallocn.c

Modified: branches/bmesh/blender/intern/guardedalloc/intern/mallocn.c
===================================================================
--- branches/bmesh/blender/intern/guardedalloc/intern/mallocn.c 2009-05-28 
04:50:12 UTC (rev 20464)
+++ branches/bmesh/blender/intern/guardedalloc/intern/mallocn.c 2009-05-28 
04:59:04 UTC (rev 20465)
@@ -50,36 +50,6 @@
 #include "MEM_guardedalloc.h"
 
 /* --------------------------------------------------------------------- */
-/* Data definition                                                       */
-/* --------------------------------------------------------------------- */
-/* all memory chunks are put in linked lists */
-typedef struct localLink
-{
-       struct localLink *next,*prev;
-} localLink;
-
-typedef struct localListBase 
-{
-       void *first, *last;
-} localListBase;
-
-       /* note: keep this struct aligned (e.g., irix/gcc) - Hos */
-typedef struct MemHead {
-       int tag1;
-       int len;
-       struct MemHead *next,*prev;
-       const char * name;
-       const char * nextname;
-       int tag2;
-       int mmap;       /* if true, memory was mmapped */
-} MemHead;
-
-typedef struct MemTail {
-       int tag3, pad;
-} MemTail;
-
-
-/* --------------------------------------------------------------------- */
 /* local functions                                                       */
 /* --------------------------------------------------------------------- */
 
@@ -472,35 +442,55 @@
        MEM_printmemlist_internal(1);
 }
 
-short MEM_freeN(void *vmemh)           /* anders compileertie niet meer */
+#ifdef MEM_freeN
+#undef MEM_freeN
+#endif
+
+short MEM_freeN(void *vmemh)
 {
+       return _MEM_freeN(vmemh, "(called through C stub function)", -1);
+}
+
+short WMEM_freeN(void *vmemh)
+{
+       return _MEM_freeN(vmemh, "(called through C stub function)", -1);
+}
+
+/*special macro-wrapped MEM_freeN that keeps track of where MEM_freeN is 
called.*/
+short _MEM_freeN(void *vmemh, char *file, int line)            /* anders 
compileertie niet meer */
+{
        short error = 0;
        MemTail *memt;
        MemHead *memh= vmemh;
        const char *name;
-
+       char str1[90];
+       
        if (memh == NULL){
-               MemorY_ErroR("free","attempt to free NULL pointer");
+               sprintf(str1, "Error in %s on line %d: attempt to free NULL 
pointer", file, line);
+               MemorY_ErroR("free", str1);
                /* print_error(err_stream, "%d\n", (memh+4000)->tag1); */
                return(-1);
        }
 
        if(sizeof(intptr_t)==8) {
                if (((intptr_t) memh) & 0x7) {
-                       MemorY_ErroR("free","attempt to free illegal pointer");
+                       sprintf(str1, "Error in %s on line %d: attempt to free 
illegal pointer", file, line);
+                       MemorY_ErroR("free", str1);
                        return(-1);
                }
        }
        else {
                if (((intptr_t) memh) & 0x3) {
-                       MemorY_ErroR("free","attempt to free illegal pointer");
+                       sprintf(str1, "Error in %s on line %d: attempt to free 
illegal pointer", file, line);
+                       MemorY_ErroR("free", str1);
                        return(-1);
                }
        }
        
        memh--;
        if(memh->tag1 == MEMFREE && memh->tag2 == MEMFREE) {
-               MemorY_ErroR(memh->name,"double free");
+               sprintf(str1, "Error in %s on line %d: double free", file, 
line);
+               MemorY_ErroR(memh->name, str1);
                return(-1);
        }
 
@@ -524,15 +514,19 @@
                MemorY_ErroR(memh->name,"end corrupt");
                name = check_memlist(memh);
                if (name != 0){
-                       if (name != memh->name) MemorY_ErroR(name,"is also 
corrupt");
+                       sprintf(str1, "Error in %s on line %d: %s is also 
corrupt", file, line, name);
+                       if (name != memh->name) MemorY_ErroR(name, str1);
                }
        } else{
                error = -1;
                name = check_memlist(memh);
-               if (name == 0)
-                       MemorY_ErroR("free","pointer not in memlist");
-               else
-                       MemorY_ErroR(name,"error in header");
+               if (name == 0) {
+                       sprintf(str1, "Error in %s on line %d: pointer not in 
memlist", file, line);
+                       MemorY_ErroR("free", str1);
+               } else {
+                       sprintf(str1, "Error in %s on line %d: error in 
header", file, line);
+                       MemorY_ErroR(name, str1);
+               }
        }
 
        totblock--;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to