summaryrefslogtreecommitdiff
path: root/libguile/objcodes.c
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2009-09-01 23:53:58 +0200
committerLudovic Courtès <ludo@gnu.org>2009-09-01 23:53:58 +0200
commitd7e7a02a6251c8ed4f76933d9d30baeee3f599c0 (patch)
tree090c38e239a5a48501a3826552b8842c9bdb1d82 /libguile/objcodes.c
parentba54a2026beaadb4e7566d4b9e2c9e4c7cd793e6 (diff)
downloadguile-d7e7a02a6251c8ed4f76933d9d30baeee3f599c0.tar.gz
Fix leaky behavior of `scm_take_TAGvector ()'.
* libguile/srfi-4.c (free_user_data): New function. * libguile/srfi-4.i.c (scm_take_TAGvector): Register `free_user_data ()' as a finalizer for DATA. * libguile/objcodes.c (scm_objcode_to_bytecode): Allocate with `scm_malloc ()' since the memory taken by `scm_take_u8vector ()' will eventually be free(3)d. * libguile/vm.c (really_make_boot_program): Likewise.
Diffstat (limited to 'libguile/objcodes.c')
-rw-r--r--libguile/objcodes.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libguile/objcodes.c b/libguile/objcodes.c
index 33ba296ea..be3423271 100644
--- a/libguile/objcodes.c
+++ b/libguile/objcodes.c
@@ -229,8 +229,8 @@ SCM_DEFINE (scm_objcode_to_bytecode, "objcode->bytecode", 1, 0, 0,
SCM_VALIDATE_OBJCODE (1, objcode);
len = sizeof(struct scm_objcode) + SCM_OBJCODE_TOTAL_LEN (objcode);
- /* FIXME: Is `gc_malloc' ok here? */
- u8vector = scm_gc_malloc (len, "objcode-u8vector");
+
+ u8vector = scm_malloc (len);
memcpy (u8vector, SCM_OBJCODE_DATA (objcode), len);
return scm_take_u8vector (u8vector, len);