summaryrefslogtreecommitdiff
path: root/libguile/gc-malloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/gc-malloc.c')
-rw-r--r--libguile/gc-malloc.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/libguile/gc-malloc.c b/libguile/gc-malloc.c
index 127805eb0..a58ed1376 100644
--- a/libguile/gc-malloc.c
+++ b/libguile/gc-malloc.c
@@ -111,19 +111,22 @@ scm_realloc (void *mem, size_t size)
return ptr;
scm_i_scm_pthread_mutex_lock (&scm_i_sweep_mutex);
-
+ scm_gc_running_p = 1;
+
scm_i_sweep_all_segments ("realloc");
SCM_SYSCALL (ptr = realloc (mem, size));
if (ptr)
{
+ scm_gc_running_p = 0;
scm_i_pthread_mutex_unlock (&scm_i_sweep_mutex);
return ptr;
}
- scm_igc ("realloc");
+ scm_i_gc ("realloc");
scm_i_sweep_all_segments ("realloc");
+ scm_gc_running_p = 0;
scm_i_pthread_mutex_unlock (&scm_i_sweep_mutex);
SCM_SYSCALL (ptr = realloc (mem, size));
@@ -219,9 +222,10 @@ increase_mtrigger (size_t size, const char *what)
float yield;
scm_i_scm_pthread_mutex_lock (&scm_i_sweep_mutex);
+ scm_gc_running_p = 1;
prev_alloced = mallocated;
- scm_igc (what);
+ scm_i_gc (what);
scm_i_sweep_all_segments ("mtrigger");
yield = (((float) prev_alloced - (float) scm_mallocated)
@@ -262,7 +266,8 @@ increase_mtrigger (size_t size, const char *what)
scm_mtrigger);
#endif
}
-
+
+ scm_gc_running_p = 0;
scm_i_pthread_mutex_unlock (&scm_i_sweep_mutex);
}
}