+Tue Oct 6 14:29:47 1998 Tim Janik <timj@gtk.org>
+
+ * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is
+ defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool
+ <mbp@wistful.humbug.org.au>).
+
Sat Oct 3 01:18:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
+Tue Oct 6 14:29:47 1998 Tim Janik <timj@gtk.org>
+
+ * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is
+ defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool
+ <mbp@wistful.humbug.org.au>).
+
Sat Oct 3 01:18:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
+Tue Oct 6 14:29:47 1998 Tim Janik <timj@gtk.org>
+
+ * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is
+ defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool
+ <mbp@wistful.humbug.org.au>).
+
Sat Oct 3 01:18:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
+Tue Oct 6 14:29:47 1998 Tim Janik <timj@gtk.org>
+
+ * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is
+ defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool
+ <mbp@wistful.humbug.org.au>).
+
Sat Oct 3 01:18:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
+Tue Oct 6 14:29:47 1998 Tim Janik <timj@gtk.org>
+
+ * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is
+ defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool
+ <mbp@wistful.humbug.org.au>).
+
Sat Oct 3 01:18:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
+Tue Oct 6 14:29:47 1998 Tim Janik <timj@gtk.org>
+
+ * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is
+ defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool
+ <mbp@wistful.humbug.org.au>).
+
Sat Oct 3 01:18:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
+Tue Oct 6 14:29:47 1998 Tim Janik <timj@gtk.org>
+
+ * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is
+ defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool
+ <mbp@wistful.humbug.org.au>).
+
Sat Oct 3 01:18:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
+Tue Oct 6 14:29:47 1998 Tim Janik <timj@gtk.org>
+
+ * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is
+ defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool
+ <mbp@wistful.humbug.org.au>).
+
Sat Oct 3 01:18:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
/* #define ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS */
/* #define ENABLE_MEM_CHECK */
+/*
+ * This library can check for some attempts to do illegal things to
+ * memory (ENABLE_MEM_CHECK), and can do profiling
+ * (ENABLE_MEM_PROFILE). Both features are implemented by storing
+ * words before the start of the memory chunk.
+ *
+ * The first, at offset -2*SIZEOF_LONG, is used only if
+ * ENABLE_MEM_CHECK is set, and stores 0 after the memory has been
+ * allocated and 1 when it has been freed. The second, at offset
+ * -SIZEOF_LONG, is used if either flag is set and stores the size of
+ * the block.
+ *
+ * The MEM_CHECK flag is checked when memory is realloc'd and free'd,
+ * and it can be explicitly checked before using a block by calling
+ * g_mem_check().
+ */
+
#if defined(ENABLE_MEM_PROFILE) && defined(ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS)
#define ENTER_MEM_CHUNK_ROUTINE() allocating_for_mem_chunk++
#define LEAVE_MEM_CHUNK_ROUTINE() allocating_for_mem_chunk--
*t = size;
#ifdef ENABLE_MEM_PROFILE
-#ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
+# ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
if(!allocating_for_mem_chunk) {
-#endif
+# endif
if (size <= 4095)
allocations[size-1] += 1;
else
allocations[4095] += 1;
allocated_mem += size;
-#ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
+# ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
}
-#endif
+# endif
#endif /* ENABLE_MEM_PROFILE */
#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
return NULL;
-#ifdef ENABLE_MEM_PROFILE
+#if defined (ENABLE_MEM_PROFILE) || defined (ENABLE_MEM_CHECK)
size += SIZEOF_LONG;
-#endif /* ENABLE_MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
#ifdef ENABLE_MEM_CHECK
size += SIZEOF_LONG;
p = ((guchar*) p + SIZEOF_LONG);
*t = size;
-#ifdef ENABLE_MEM_PROFILE
-#ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
+# ifdef ENABLE_MEM_PROFILE
+# ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
if(!allocating_for_mem_chunk) {
-#endif
+# endif
if (size <= 4095)
allocations[size-1] += 1;
else
allocations[4095] += 1;
allocated_mem += size;
-#ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
+# ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
}
-#endif
-#endif /* ENABLE_MEM_PROFILE */
+# endif
+# endif /* ENABLE_MEM_PROFILE */
#endif /* ENABLE_MEM_PROFILE */
}
if (!p)
- g_error ("could not reallocate %ld bytes", size);
+ g_error ("could not reallocate %lu bytes", (gulong) size);
#ifdef ENABLE_MEM_CHECK
t = (gulong*) ((guchar*) mem - SIZEOF_LONG - SIZEOF_LONG);
if (*t >= 1)
- g_warning ("mem: 0x%08x has been freed: %lu\n", (gulong) mem, *t);
+ g_warning ("mem: 0x%08x has been freed %lu times\n", (gulong) mem, *t);
#endif /* ENABLE_MEM_CHECK */
}
/* #define ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS */
/* #define ENABLE_MEM_CHECK */
+/*
+ * This library can check for some attempts to do illegal things to
+ * memory (ENABLE_MEM_CHECK), and can do profiling
+ * (ENABLE_MEM_PROFILE). Both features are implemented by storing
+ * words before the start of the memory chunk.
+ *
+ * The first, at offset -2*SIZEOF_LONG, is used only if
+ * ENABLE_MEM_CHECK is set, and stores 0 after the memory has been
+ * allocated and 1 when it has been freed. The second, at offset
+ * -SIZEOF_LONG, is used if either flag is set and stores the size of
+ * the block.
+ *
+ * The MEM_CHECK flag is checked when memory is realloc'd and free'd,
+ * and it can be explicitly checked before using a block by calling
+ * g_mem_check().
+ */
+
#if defined(ENABLE_MEM_PROFILE) && defined(ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS)
#define ENTER_MEM_CHUNK_ROUTINE() allocating_for_mem_chunk++
#define LEAVE_MEM_CHUNK_ROUTINE() allocating_for_mem_chunk--
*t = size;
#ifdef ENABLE_MEM_PROFILE
-#ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
+# ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
if(!allocating_for_mem_chunk) {
-#endif
+# endif
if (size <= 4095)
allocations[size-1] += 1;
else
allocations[4095] += 1;
allocated_mem += size;
-#ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
+# ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
}
-#endif
+# endif
#endif /* ENABLE_MEM_PROFILE */
#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
return NULL;
-#ifdef ENABLE_MEM_PROFILE
+#if defined (ENABLE_MEM_PROFILE) || defined (ENABLE_MEM_CHECK)
size += SIZEOF_LONG;
-#endif /* ENABLE_MEM_PROFILE */
+#endif /* ENABLE_MEM_PROFILE || ENABLE_MEM_CHECK */
#ifdef ENABLE_MEM_CHECK
size += SIZEOF_LONG;
p = ((guchar*) p + SIZEOF_LONG);
*t = size;
-#ifdef ENABLE_MEM_PROFILE
-#ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
+# ifdef ENABLE_MEM_PROFILE
+# ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
if(!allocating_for_mem_chunk) {
-#endif
+# endif
if (size <= 4095)
allocations[size-1] += 1;
else
allocations[4095] += 1;
allocated_mem += size;
-#ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
+# ifdef ENABLE_MEM_PROFILE_EXCLUDES_MEM_CHUNKS
}
-#endif
-#endif /* ENABLE_MEM_PROFILE */
+# endif
+# endif /* ENABLE_MEM_PROFILE */
#endif /* ENABLE_MEM_PROFILE */
}
if (!p)
- g_error ("could not reallocate %ld bytes", size);
+ g_error ("could not reallocate %lu bytes", (gulong) size);
#ifdef ENABLE_MEM_CHECK
t = (gulong*) ((guchar*) mem - SIZEOF_LONG - SIZEOF_LONG);
if (*t >= 1)
- g_warning ("mem: 0x%08x has been freed: %lu\n", (gulong) mem, *t);
+ g_warning ("mem: 0x%08x has been freed %lu times\n", (gulong) mem, *t);
#endif /* ENABLE_MEM_CHECK */
}