From c8836ac6924801a31e6d284f2f00c401d3a64668 Mon Sep 17 00:00:00 2001 From: hackmud-dtr Date: Tue, 6 Jul 2021 00:18:13 -0700 Subject: [PATCH] Fix sign-extension in Isolate Data C++ will 'promote' a bitfield member that is narrower than an int into an int on arithmetic, leading to sign extension when converted back to a wider type. --- ext/mini_racer_extension/mini_racer_extension.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/mini_racer_extension/mini_racer_extension.cc b/ext/mini_racer_extension/mini_racer_extension.cc index f930ac83..c81eef0b 100644 --- a/ext/mini_racer_extension/mini_racer_extension.cc +++ b/ext/mini_racer_extension/mini_racer_extension.cc @@ -155,7 +155,7 @@ class IsolateData { case IN_GVL: return u.IN_GVL; case DO_TERMINATE: return u.DO_TERMINATE; case MEM_SOFTLIMIT_REACHED: return u.MEM_SOFTLIMIT_REACHED; - case MEM_SOFTLIMIT_MAX: return u.MEM_SOFTLIMIT_MAX << 10; + case MEM_SOFTLIMIT_MAX: return static_cast(u.MEM_SOFTLIMIT_MAX) << 10; case MARSHAL_STACKDEPTH_REACHED: return u.MARSHAL_STACKDEPTH_REACHED; case MARSHAL_STACKDEPTH_VALUE: return u.MARSHAL_STACKDEPTH_VALUE; case MARSHAL_STACKDEPTH_MAX: return u.MARSHAL_STACKDEPTH_MAX;