From 5bbbe44a7b75afac2b335f6ea31249d206d8bd75 Mon Sep 17 00:00:00 2001 From: Paulo Matos Date: Tue, 2 Oct 2018 22:02:00 +0200 Subject: [PATCH] Fix ubsan runtime error due to large shift --- racket/src/racket/src/number.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/racket/src/racket/src/number.c b/racket/src/racket/src/number.c index 26021055f1..e5702dd8c6 100644 --- a/racket/src/racket/src/number.c +++ b/racket/src/racket/src/number.c @@ -5477,8 +5477,8 @@ static Scheme_Object *fold_fixnum_bitwise_shift(int argc, Scheme_Object *argv[]) base = SCHEME_INT_VAL(argv[0]); /* Consistent if potentially unkept bits are all 0 or 1 */ - if (!(base - (base & ((1 << kept) - 1))) - || !(~(base | ((1 << kept) - 1)))) { + if (!(base - (base & ((1UL << kept) - 1))) + || !(~(base | ((1UL << kept) - 1)))) { v = base << amt; return scheme_make_integer(v);