Fix bitwise rshift by 0 to be unsigned (fix #1784)

This commit is contained in:
Standa Opichal 2020-03-23 23:09:26 +01:00
parent 982b4c580e
commit bb60ff627c
2 changed files with 4 additions and 2 deletions

View File

@ -3425,7 +3425,7 @@ JsVar *jsvMathsOp(JsVar *a, JsVar *b, int op) {
case '%': return db ? jsvNewFromInteger(da%db) : jsvNewFromFloat(NAN); case '%': return db ? jsvNewFromInteger(da%db) : jsvNewFromFloat(NAN);
case LEX_LSHIFT: return jsvNewFromInteger(da << db); case LEX_LSHIFT: return jsvNewFromInteger(da << db);
case LEX_RSHIFT: 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_EQUAL: return jsvNewFromBool(da==db && jsvIsNull(a)==jsvIsNull(b));
case LEX_NEQUAL: return jsvNewFromBool(da!=db || jsvIsNull(a)!=jsvIsNull(b)); case LEX_NEQUAL: return jsvNewFromBool(da!=db || jsvIsNull(a)!=jsvIsNull(b));
case '<': return jsvNewFromBool(da<db); case '<': return jsvNewFromBool(da<db);

View File

@ -2,4 +2,6 @@
var a = (2<<2); var a = (2<<2);
var b = (16>>3); var b = (16>>3);
var c = ((-1&0xFFFFFFFF) >>> 16); 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;