diff options
| author | 2026-03-03 15:57:36 -0500 | |
|---|---|---|
| committer | 2026-03-03 15:57:36 -0500 | |
| commit | 643a7f4ac33f762d299e69ecc27ead5834c13ba4 (patch) | |
| tree | 764e4c68aec5c1b5a227c91b43f87dd0c262506f | |
| parent | preparing for CHICKEN 6 (diff) | |
fix allocation of closures (from Felix)
| -rw-r--r-- | lowlevel.scm | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/lowlevel.scm b/lowlevel.scm index 1032534..1e6544b 100644 --- a/lowlevel.scm +++ b/lowlevel.scm @@ -53,13 +53,13 @@ (scheme-object sig)) " int old_size = C_header_size(proc); -C_word closure[C_SIZEOF_CLOSURE(old_size + 1)]; +C_word *closure = C_alloc(C_SIZEOF_CLOSURE(old_size + 1)); int i; closure[0] = C_CLOSURE_TYPE | (old_size + 1); for (i = 0; i < old_size; i++) - C_block_item(closure, i) = C_block_item(proc, i); -C_block_item(closure, old_size) = sig; + closure[ i + 1 ] = C_block_item(proc, i); +closure[ old_size + 1 ] = sig; C_return(closure);")) @@ -74,15 +74,15 @@ C_return(closure);")) int size = C_header_size(proc); C_word item; int i; -C_word closure[C_SIZEOF_CLOSURE(size)]; +C_word *closure = C_alloc(C_SIZEOF_CLOSURE(size)); closure[0] = C_CLOSURE_TYPE | size; for (i = 0; i < size; i++) { item = C_block_item(proc, i); if (C_i_pairp(item) == C_SCHEME_TRUE && C_eqp(unique_symbol, C_u_i_car(item)) == C_SCHEME_TRUE) { - C_block_item(closure, i) = sig; + closure[ i + 1 ] = sig; } else { - C_block_item(closure, i) = item; + closure[ i + 1 ] = item; } } |
