Author: j16sdiz
Date: 2009-04-22 09:10:31 +0000 (Wed, 22 Apr 2009)
New Revision: 27206

Modified:
   trunk/contrib/fec/src/csrc/fec.c
Log:
Don't free immediatly, or we will get the same addr

Modified: trunk/contrib/fec/src/csrc/fec.c
===================================================================
--- trunk/contrib/fec/src/csrc/fec.c    2009-04-22 08:46:42 UTC (rev 27205)
+++ trunk/contrib/fec/src/csrc/fec.c    2009-04-22 09:10:31 UTC (rev 27206)
@@ -617,17 +617,25 @@
 }
 
 // HACK: allocate a memory in low 32 bit region
+#define MALLOC_LOW_TRY 32
 static void *
 my_malloc_low(int sz, char *err_string)
 {
-       int i;
-       for (i = 0 ; i < 30 ; i++) {
-               void *p = my_malloc(sz, err_string);
-               if (((uint32_t)(uintptr_t)p) == (uintptr_t)p)
-                       return p;
-               
-               free(p);
+       void* p[MALLOC_LOW_TRY];
+       int i, j;
+
+       for (i = 0 ; i < MALLOC_LOW_TRY ; i++) {
+               p[i] = my_malloc(sz, err_string);
+               if (((uint32_t)(uintptr_t)p[i]) == (uintptr_t)p[i]) {
+                       for (j = 0; j < i; j++)
+                               free(p[j]);
+                       return p[i];
+               }
        }
+
+       for (j = 0; j < i; j++)
+               free(p[j]);
+
        fprintf(stderr, "-- malloc failure allocating low %s\n", err_string);
        exit(1) ;
 }

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to