From bb60ff627c26dfb51e5d9be7af0d6d3f63f1ed54 Mon Sep 17 00:00:00 2001 From: Standa Opichal Date: Mon, 23 Mar 2020 23:09:26 +0100 Subject: [PATCH] Fix bitwise rshift by 0 to be unsigned (fix #1784) --- src/jsvar.c | 2 +- tests/test_bitshifting.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/jsvar.c b/src/jsvar.c index e4099804b..accb1048f 100644 --- a/src/jsvar.c +++ b/src/jsvar.c @@ -3425,7 +3425,7 @@ JsVar *jsvMathsOp(JsVar *a, JsVar *b, int op) { case '%': return db ? jsvNewFromInteger(da%db) : jsvNewFromFloat(NAN); case LEX_LSHIFT: return jsvNewFromInteger(da << db); case LEX_RSHIFT: return jsvNewFromInteger(da >> db); - case LEX_RSHIFTUNSIGNED: return jsvNewFromInteger((JsVarInt)(((JsVarIntUnsigned)da) >> db)); + case LEX_RSHIFTUNSIGNED: return jsvNewFromLongInteger(((JsVarIntUnsigned)da) >> db); case LEX_EQUAL: return jsvNewFromBool(da==db && jsvIsNull(a)==jsvIsNull(b)); case LEX_NEQUAL: return jsvNewFromBool(da!=db || jsvIsNull(a)!=jsvIsNull(b)); case '<': return jsvNewFromBool(da>3); var c = ((-1&0xFFFFFFFF) >>> 16); -result = a==8 && b==2 && c == 0xFFFF; +var d = -7 >>> 0; + +result = a==8 && b==2 && c == 0xFFFF && d == 0xFFFFFFF9;