summaryrefslogtreecommitdiff
path: root/libguile/vm-engine.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-06-26 11:07:17 +0200
committerAndy Wingo <wingo@pobox.com>2018-06-26 11:09:40 +0200
commit185d19dfb1a570c3075fa8f1a653334412ae6b85 (patch)
treecd121f4d3510c5a158fd44068e3ceca290720a5f /libguile/vm-engine.c
parent5e8e816c61f99ef1d96ad186d949659bf3aa8853 (diff)
downloadguile-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.c5
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);
}