diff options
Diffstat (limited to 'libguile/gc-malloc.c')
-rw-r--r-- | libguile/gc-malloc.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libguile/gc-malloc.c b/libguile/gc-malloc.c index 0cd6bfaad..1dbb448f1 100644 --- a/libguile/gc-malloc.c +++ b/libguile/gc-malloc.c @@ -150,7 +150,17 @@ scm_malloc (size_t sz) void * scm_calloc (size_t sz) { - void * ptr = scm_realloc (NULL, sz); + void * ptr; + + /* + By default, try to use calloc, as it is likely more efficient than + calling memset by hand. + */ + SCM_SYSCALL(ptr= calloc (sz, 1)); + if (ptr) + return ptr; + + ptr = scm_realloc (NULL, sz); memset (ptr, 0x0, sz); return ptr; } |