diff options
author | Ludovic Courtès <ludo@gnu.org> | 2009-09-01 23:53:58 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2009-09-01 23:53:58 +0200 |
commit | d7e7a02a6251c8ed4f76933d9d30baeee3f599c0 (patch) | |
tree | 090c38e239a5a48501a3826552b8842c9bdb1d82 /libguile/objcodes.c | |
parent | ba54a2026beaadb4e7566d4b9e2c9e4c7cd793e6 (diff) | |
download | guile-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.c | 4 |
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); |