~ chicken-core (chicken-5) ec5ebfca528c81b5550e24b7bef69b0701aa1032
commit ec5ebfca528c81b5550e24b7bef69b0701aa1032
Author: Peter Bex <peter@more-magic.net>
AuthorDate: Sat May 23 15:04:40 2015 +0200
Commit: Peter Bex <peter@more-magic.net>
CommitDate: Sun May 31 14:55:25 2015 +0200
Fix C_long_to_num and C_unsigned_long_to_num so it doesn't attempt to allocate bignums of size 2
diff --git a/chicken.h b/chicken.h
index 94363b00..f268077f 100644
--- a/chicken.h
+++ b/chicken.h
@@ -2643,13 +2643,20 @@ C_inline C_word C_uint64_to_num(C_word **ptr, C_u64 n)
C_inline C_word C_long_to_num(C_word **ptr, C_long n)
{
- return C_int64_to_num(ptr, (C_s64)n);
+ if(C_fitsinfixnump(n)) {
+ return C_fix(n);
+ } else {
+ return C_bignum1(ptr, n < 0, labs(n));
+ }
}
-
C_inline C_word C_unsigned_long_to_num(C_word **ptr, C_ulong n)
{
- return C_uint64_to_num(ptr, (C_u64)n);
+ if(C_ufitsinfixnump(n)) {
+ return C_fix(n);
+ } else {
+ return C_bignum1(ptr, 0, n);
+ }
}
Trap