summaryrefslogtreecommitdiff
path: root/libguile/gc-malloc.c
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>2002-12-10 20:25:26 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>2002-12-10 20:25:26 +0000
commit960c408c04470b0680e250b44e5273987e1aa66d (patch)
tree37dd7fa9f6fb2f906fbced731027918dcae38c8b /libguile/gc-malloc.c
parent3cdde9d66789df427a36da3627d4f7f8731587fc (diff)
downloadguile-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.c10
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;