Hi!

Indeed, all you say is right. It needed a full recompile with the HEAD
to trigger this error by generating a use of the unboxed fXX accessors
in the SRFI-4 runtime system.

See attached patch, the reason is quite clear: the unboxed accessors
assumed unboxed fixnum index arguments.


felix
From 0b5ba854f5211d266964c22d1e082bfba47046a7 Mon Sep 17 00:00:00 2001
From: felix <fe...@call-with-current-continuation.org>
Date: Sat, 1 Dec 2018 23:00:04 +0100
Subject: [PATCH] Unboxed variants fXX SRFI-4 vector accessors assumed umboxed
 fixnum index operand.

---
 chicken.h | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/chicken.h b/chicken.h
index 8bf588a3..598a3cff 100644
--- a/chicken.h
+++ b/chicken.h
@@ -1609,10 +1609,10 @@ typedef void (C_ccall *C_proc)(C_word, C_word *) 
C_noret;
 #define C_u_i_f32vector_set(v, i, x)    ((((float 
*)C_data_pointer(C_block_item((v), 1)))[ C_unfix(i) ] = C_flonum_magnitude(x)), 
C_SCHEME_UNDEFINED)
 #define C_u_i_f64vector_set(v, i, x)    ((((double 
*)C_data_pointer(C_block_item((v), 1)))[ C_unfix(i) ] = C_flonum_magnitude(x)), 
C_SCHEME_UNDEFINED)
 
-#define C_ub_i_f32vector_ref(b, i)      (((float 
*)C_data_pointer(C_block_item((b), 1)))[ i ])
-#define C_ub_i_f64vector_ref(b, i)      (((double 
*)C_data_pointer(C_block_item((b), 1)))[ i ])
-#define C_ub_i_f32vector_set(v, i, x)   ((((float 
*)C_data_pointer(C_block_item((v), 1)))[ i ] = (x)), 0)
-#define C_ub_i_f64vector_set(v, i, x)   ((((double 
*)C_data_pointer(C_block_item((v), 1)))[ i ] = (x)), 0)
+#define C_ub_i_f32vector_ref(b, i)      (((float 
*)C_data_pointer(C_block_item((b), 1)))[ C_unfix(i) ])
+#define C_ub_i_f64vector_ref(b, i)      (((double 
*)C_data_pointer(C_block_item((b), 1)))[ C_unfix(i) ])
+#define C_ub_i_f32vector_set(v, i, x)   ((((float 
*)C_data_pointer(C_block_item((v), 1)))[ C_unfix(i) ] = (x)), 0)
+#define C_ub_i_f64vector_set(v, i, x)   ((((double 
*)C_data_pointer(C_block_item((v), 1)))[ C_unfix(i) ] = (x)), 0)
 
 #define C_a_i_flonum_sin(ptr, c, x)     C_flonum(ptr, 
C_sin(C_flonum_magnitude(x)))
 #define C_a_i_flonum_cos(ptr, c, x)     C_flonum(ptr, 
C_cos(C_flonum_magnitude(x)))
-- 
2.16.2

_______________________________________________
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers

Reply via email to