~ chicken-core (master) e874ed242b757cebb44c30be93a1155b288036df
commit e874ed242b757cebb44c30be93a1155b288036df
Author: felix <felix@call-with-current-continuation.org>
AuthorDate: Tue Sep 1 15:08:14 2026 +0200
Commit: felix <felix@call-with-current-continuation.org>
CommitDate: Tue Sep 1 15:08:14 2026 +0200
avoid signed shift overflow
Report and fix by "crzcrz".
diff --git a/runtime.c b/runtime.c
index 07817350..8d5be71d 100644
--- a/runtime.c
+++ b/runtime.c
@@ -6556,7 +6556,7 @@ C_regparm C_word C_i_bit_to_bool(C_word n, C_word i)
i = C_unfix(i);
if (n & C_FIXNUM_BIT) {
if (i >= C_WORD_SIZE) return C_mk_bool(n & C_INT_SIGN_BIT);
- else return C_mk_bool((C_unfix(n) & ((C_word)1 << i)) != 0);
+ else return C_mk_bool((C_unfix(n) & ((C_uword)1 << i)) != 0);
} else {
C_word nn, d;
d = i / C_BIGNUM_DIGIT_LENGTH;
Trap