commit 60d6bcf74c637c5bfd1bfc1cae8182d149a6793e Author: Egeyar Bagcioglu Date: Sun Jan 12 00:33:37 2020 +0100 Prevent close command from returning a value. diff --git a/ChangeLog b/ChangeLog index a5320800..d3ca6626 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2020-01-12 Egeyar Bagcioglu + + * src/pkl-gen.c (pkl_gen_ps_comp_stmt): Remove PKL_INSN_RETURN from + PKL_AST_BUILTIN_CLOSE which returns void. + * src/pvm.jitter (close): Add JITTER_DROP_STACK. + 2020-01-11 Egeyar Bagcioglu * src/ios.c (ios_write_int_common): Add specifiers "static inline". diff --git a/src/pkl-gen.c b/src/pkl-gen.c index 9ff1fa75..f1b7d750 100644 --- a/src/pkl-gen.c +++ b/src/pkl-gen.c @@ -406,7 +406,6 @@ PKL_PHASE_BEGIN_HANDLER (pkl_gen_ps_comp_stmt) case PKL_AST_BUILTIN_CLOSE: pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_PUSHVAR, 0, 0); pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_CLOSE); - pkl_asm_insn (PKL_GEN_ASM, PKL_INSN_RETURN); break; default: assert (0); diff --git a/src/pvm.jitter b/src/pvm.jitter index fa53d6ca..91b64c4b 100644 --- a/src/pvm.jitter +++ b/src/pvm.jitter @@ -620,13 +620,14 @@ end instruction close () # ( INT -- ) code - int io_id = PVM_VAL_INT (JITTER_TOP_STACK ()); - ios io = ios_search_by_id (io_id); + int io_id = PVM_VAL_INT (JITTER_TOP_STACK ()); + ios io = ios_search_by_id (io_id); - if (io == NULL) - PVM_RAISE (PVM_E_IO); + if (io == NULL) + PVM_RAISE (PVM_E_IO); - ios_close (io); + ios_close (io); + JITTER_DROP_STACK (); end end