Update of /cvsroot/monetdb/pathfinder/compiler/mem
In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv4262/compiler/mem

Modified Files:
        array.c mem.c mem_gc.c 
Log Message:
[ 1633232 ] PF: memory reallocation buggy
- fixed PFrealloc so it knows the old region size



Index: mem.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mem/mem.c,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -d -r1.20 -r1.21
--- mem.c       13 Mar 2007 13:56:01 -0000      1.20
+++ mem.c       25 May 2007 10:27:39 -0000      1.21
@@ -127,10 +127,11 @@
 }
 
 char *
-mem_realloc (PFmem_allocator *pa, char *p, size_t n) 
+mem_realloc (PFmem_allocator *pa, char *p, size_t old_n, size_t n) 
 {
         char *r = mem_alloc( pa, n);
-        memcpy(r, p, n);
+        size_t i;
+        for(i=0; i < old_n; i++) r[i] = p [i];
         return r;
 }
 
@@ -158,11 +159,11 @@
  * Worker for #PFrealloc ().
  */
 void *
-PFrealloc_ (void *mem, size_t n,
+PFrealloc_ (void *mem, size_t old_n, size_t n,
            const char *file, const char *func, const int line) 
 {
     /* resize garbage collected heap memory to requested size */
-    mem = mem_realloc (pf_alloc, mem, n);
+    mem = mem_realloc (pf_alloc, mem, old_n, n);
 
     if (mem == 0) {
         /* don't use PFoops () here as it tries to allocate even more memory */

Index: mem_gc.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mem/mem_gc.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- mem_gc.c    13 Mar 2007 13:56:01 -0000      1.2
+++ mem_gc.c    25 May 2007 10:27:39 -0000      1.3
@@ -85,9 +85,10 @@
  * Worker for #PFrealloc ().
  */
 void *
-PFrealloc_ (void *mem, size_t n,
+PFrealloc_ (void *mem, size_t old_n, size_t n,
            const char *file, const char *func, const int line) 
 {
+    (void) old_n;
     /* resize garbage collected heap memory to requested size */
     mem = GC_REALLOC (mem, n);
 

Index: array.c
===================================================================
RCS file: /cvsroot/monetdb/pathfinder/compiler/mem/array.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -d -r1.22 -r1.23
--- array.c     13 Mar 2007 13:56:01 -0000      1.22
+++ array.c     25 May 2007 10:27:39 -0000      1.23
@@ -126,7 +126,7 @@
     nbytes = ((i + 1) * a->esize + ACHUNK) & (~ACHUNK + 1);
 
     assert(a->base);
-    a->base = PFrealloc (a->base, nbytes);
+    a->base = PFrealloc (a->base, a->bound*a->esize, nbytes);
 
     a->bound = nbytes / a->esize;
   }


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Monetdb-pf-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins

Reply via email to