diff options
author | Andy Wingo <wingo@pobox.com> | 2018-06-26 11:07:17 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-06-26 11:09:40 +0200 |
commit | 185d19dfb1a570c3075fa8f1a653334412ae6b85 (patch) | |
tree | cd121f4d3510c5a158fd44068e3ceca290720a5f /libguile/vm-engine.c | |
parent | 5e8e816c61f99ef1d96ad186d949659bf3aa8853 (diff) | |
download | guile-185d19dfb1a570c3075fa8f1a653334412ae6b85.tar.gz |
Foreign-call intrinsic boxes errno
* libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS):
* libguile/foreign.c (foreign_call):
* libguile/vm-engine.c (foreign-call): Change foreign-call intrinsic to
handle boxing of errno.
Diffstat (limited to 'libguile/vm-engine.c')
-rw-r--r-- | libguile/vm-engine.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/libguile/vm-engine.c b/libguile/vm-engine.c index dcbd96eb0..6f2e09320 100644 --- a/libguile/vm-engine.c +++ b/libguile/vm-engine.c @@ -635,8 +635,7 @@ VM_NAME (scm_i_thread *thread, jmp_buf *registers, int resume) VM_DEFINE_OP (11, foreign_call, "foreign-call", OP1 (X8_C12_C12)) { uint16_t cif_idx, ptr_idx; - int err = 0; - SCM closure, cif, pointer, ret; + SCM closure, cif, pointer, ret, err; UNPACK_12_12 (op, cif_idx, ptr_idx); @@ -650,7 +649,7 @@ VM_NAME (scm_i_thread *thread, jmp_buf *registers, int resume) ALLOC_FRAME (3); SP_SET (1, ret); - SP_SET (0, scm_vm_intrinsics.s64_to_scm (err)); + SP_SET (0, err); NEXT (1); } |