diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 2002-12-10 20:25:26 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 2002-12-10 20:25:26 +0000 |
commit | 960c408c04470b0680e250b44e5273987e1aa66d (patch) | |
tree | 37dd7fa9f6fb2f906fbced731027918dcae38c8b /libguile/gc-malloc.c | |
parent | 3cdde9d66789df427a36da3627d4f7f8731587fc (diff) | |
download | guile-960c408c04470b0680e250b44e5273987e1aa66d.tar.gz |
* gc-malloc.c, gc.h (scm_gc_malloc_prehistory): New function.
* gc-malloc.c (malloc_mutex): New mutex.
(scm_gc_malloc_prehistory): Initialize it.
(scm_realloc): Serialize call to realloc
(scm_calloc): Same for calloc.
Thanks to Wolfgang Jaehrling!
(Now we have to make sure all calls to malloc/realloc are made
through scm_malloc.)
* init.c (scm_init_guile_1): Call scm_gc_malloc_prehistory.
Diffstat (limited to 'libguile/gc-malloc.c')
-rw-r--r-- | libguile/gc-malloc.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/libguile/gc-malloc.c b/libguile/gc-malloc.c index f6138f89f..b2c73a104 100644 --- a/libguile/gc-malloc.c +++ b/libguile/gc-malloc.c @@ -102,6 +102,12 @@ static int scm_i_minyield_malloc; static scm_t_mutex malloc_mutex; void +scm_gc_malloc_prehistory () +{ + scm_i_plugin_mutex_init (&malloc_mutex, 0); +} + +void scm_gc_init_malloc (void) { scm_mtrigger = scm_getenv_int ("GUILE_INIT_MALLOC_LIMIT", @@ -116,8 +122,6 @@ scm_gc_init_malloc (void) if (scm_mtrigger < 0) scm_mtrigger = SCM_DEFAULT_INIT_MALLOC_LIMIT; - - scm_i_plugin_mutex_init (&malloc_mutex, 0); } @@ -132,7 +136,7 @@ scm_realloc (void *mem, size_t size) scm_i_plugin_mutex_lock (&malloc_mutex); SCM_SYSCALL (ptr = realloc (mem, size)); - scm_i_plugin_mutex_lock (&malloc_mutex); + scm_i_plugin_mutex_unlock (&malloc_mutex); if (ptr) return ptr; |