diff options
author | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-09-26 20:11:22 +0000 |
---|---|---|
committer | Dirk Herrmann <dirk@dirk-herrmanns-seiten.de> | 2000-09-26 20:11:22 +0000 |
commit | 74cc85038e5685aa7f9e81e0a9004b0717fb22a5 (patch) | |
tree | 8e7c69e7945286e9e7a65a473fb71fb50799fcf3 /libguile/procs.c | |
parent | 9eb364fccba89d07f1063d373df1aff911288e83 (diff) | |
download | guile-74cc85038e5685aa7f9e81e0a9004b0717fb22a5.tar.gz |
* Don't use string or vector macros when accessing compiled closures.
Diffstat (limited to 'libguile/procs.c')
-rw-r--r-- | libguile/procs.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/libguile/procs.c b/libguile/procs.c index 456cd19f0..f979cd097 100644 --- a/libguile/procs.c +++ b/libguile/procs.c @@ -153,14 +153,18 @@ scm_mark_subr_table () SCM scm_makcclo (SCM proc, long len) { + scm_bits_t *base = scm_must_malloc (len * sizeof (scm_bits_t), "compiled-closure"); + unsigned long i; SCM s; + + for (i = 0; i < len; ++i) + base [i] = SCM_UNPACK (SCM_UNSPECIFIED); + SCM_NEWCELL (s); SCM_DEFER_INTS; - SCM_SETCHARS (s, scm_must_malloc (len * sizeof (SCM), "compiled-closure")); - SCM_SETLENGTH (s, len, scm_tc7_cclo); - while (--len) - SCM_VELTS (s)[len] = SCM_UNSPECIFIED; - SCM_CCLO_SUBR (s) = proc; + SCM_SET_CCLO_BASE (s, base); + SCM_SET_CCLO_LENGTH (s, len); + SCM_SET_CCLO_SUBR (s, proc); SCM_ALLOW_INTS; return s; } |