~ chicken-core (chicken-5) af59953b2253c61b23a157bbacaab8a0702faa26
commit af59953b2253c61b23a157bbacaab8a0702faa26
Author: Peter Bex <peter@more-magic.net>
AuthorDate: Fri Sep 25 18:20:13 2015 +0200
Commit: Peter Bex <peter@more-magic.net>
CommitDate: Fri Sep 25 18:21:50 2015 +0200
Restore unsafe fixnum modulo operator C macro.
This is still used in the c-platform.scm unsafe rewrites for fxmod.
Found by Alexander Shendi.
diff --git a/chicken.h b/chicken.h
index 4b573135..e53beefe 100644
--- a/chicken.h
+++ b/chicken.h
@@ -1206,6 +1206,8 @@ typedef void (C_ccall *C_proc)(C_word, C_word *) C_noret;
#define C_u_fixnum_difference(n1, n2) ((n1) - (n2) + C_FIXNUM_BIT)
#define C_fixnum_difference(n1, n2) (C_u_fixnum_difference(n1, n2) | C_FIXNUM_BIT)
#define C_u_fixnum_divide(n1, n2) (C_fix(C_unfix(n1) / C_unfix(n2)))
+/* XXX TODO OBSOLETE: These 4 can be removed after recompiling c-platform.scm */
+#define C_u_fixnum_modulo(n1, n2) (C_fix(C_unfix(n1) % C_unfix(n2)))
#define C_u_fixnum_and(n1, n2) ((n1) & (n2))
#define C_fixnum_and(n1, n2) (C_u_fixnum_and(n1, n2) | C_FIXNUM_BIT)
#define C_u_fixnum_or(n1, n2) ((n1) | (n2))
Trap