From: Tim Janik Date: Tue, 6 Oct 1998 12:35:30 +0000 (+0000) Subject: fixed memory offsett when ENABLE_MEM_CHECK is defined and X-Git-Tag: GLIB_1_1_4~16 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=823a25beb64e24801025e27f145e2fb3aad45c36;p=platform%2Fupstream%2Fglib.git fixed memory offsett when ENABLE_MEM_CHECK is defined and Tue Oct 6 14:29:47 1998 Tim Janik * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool ). --- diff --git a/ChangeLog b/ChangeLog index 946e04c..60389c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Tue Oct 6 14:29:47 1998 Tim Janik + + * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is + defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool + ). + Sat Oct 3 01:18:10 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 946e04c..60389c7 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,9 @@ +Tue Oct 6 14:29:47 1998 Tim Janik + + * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is + defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool + ). + Sat Oct 3 01:18:10 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 946e04c..60389c7 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Tue Oct 6 14:29:47 1998 Tim Janik + + * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is + defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool + ). + Sat Oct 3 01:18:10 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 946e04c..60389c7 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,9 @@ +Tue Oct 6 14:29:47 1998 Tim Janik + + * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is + defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool + ). + Sat Oct 3 01:18:10 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 946e04c..60389c7 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,9 @@ +Tue Oct 6 14:29:47 1998 Tim Janik + + * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is + defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool + ). + Sat Oct 3 01:18:10 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 946e04c..60389c7 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Tue Oct 6 14:29:47 1998 Tim Janik + + * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is + defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool + ). + Sat Oct 3 01:18:10 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 946e04c..60389c7 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Tue Oct 6 14:29:47 1998 Tim Janik + + * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is + defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool + ). + Sat Oct 3 01:18:10 1998 Tim Janik * glib.h: diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 946e04c..60389c7 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Tue Oct 6 14:29:47 1998 Tim Janik + + * gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is + defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool + ). + Sat Oct 3 01:18:10 1998 Tim Janik * glib.h: diff --git a/glib/gmem.c b/glib/gmem.c index 70444a8..a92aced 100644 --- a/glib/gmem.c +++ b/glib/gmem.c @@ -24,6 +24,23 @@ /* #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-- @@ -151,17 +168,17 @@ g_malloc (gulong size) *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 */ @@ -184,9 +201,9 @@ g_malloc0 (gulong size) 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; @@ -213,19 +230,19 @@ g_malloc0 (gulong size) 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 */ @@ -279,7 +296,7 @@ g_realloc (gpointer mem, } if (!p) - g_error ("could not reallocate %ld bytes", size); + g_error ("could not reallocate %lu bytes", (gulong) size); #ifdef ENABLE_MEM_CHECK @@ -381,7 +398,7 @@ g_mem_check (gpointer mem) 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 */ } diff --git a/gmem.c b/gmem.c index 70444a8..a92aced 100644 --- a/gmem.c +++ b/gmem.c @@ -24,6 +24,23 @@ /* #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-- @@ -151,17 +168,17 @@ g_malloc (gulong size) *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 */ @@ -184,9 +201,9 @@ g_malloc0 (gulong size) 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; @@ -213,19 +230,19 @@ g_malloc0 (gulong size) 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 */ @@ -279,7 +296,7 @@ g_realloc (gpointer mem, } if (!p) - g_error ("could not reallocate %ld bytes", size); + g_error ("could not reallocate %lu bytes", (gulong) size); #ifdef ENABLE_MEM_CHECK @@ -381,7 +398,7 @@ g_mem_check (gpointer mem) 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 */ }