diff --git a/vm.c b/vm.c index 82804225..83cd44cf 100644 --- a/vm.c +++ b/vm.c @@ -1506,6 +1506,9 @@ sexp sexp_apply (sexp ctx, sexp proc, sexp args) { _ALIGN_IP(); sexp_context_top(ctx) = top; _PUSH(sexp_alloc_tagged(ctx, _UWORD1, _UWORD0)); + /* initialize fields to void */ + for (i=(_UWORD1-sexp_sizeof_header)/sizeof(sexp_uint_t) - 1; i>=0; i--) + sexp_slot_set(_ARG1, i, SEXP_VOID); ip += sizeof(sexp)*2; break; case SEXP_OP_SLOT_REF: