DataView#getUint32() sign-bit fix

This commit is contained in:
Standa Opichal 2017-10-28 17:00:06 +02:00
parent d66db87dc2
commit d2e949c947
2 changed files with 5 additions and 1 deletions

View File

@ -372,7 +372,7 @@ JsVar *jsvArrayBufferIteratorGetValue(JsvArrayBufferIterator *it) {
return jsvNewFromFloat(jsvArrayBufferIteratorDataToFloat(it, data));
} else {
JsVarInt i = jsvArrayBufferIteratorDataToInt(it, data);
if (it->type == ARRAYBUFFERVIEW_UINT32)
if ((it->type & ~ARRAYBUFFERVIEW_BIG_ENDIAN) == ARRAYBUFFERVIEW_UINT32)
return jsvNewFromLongInteger((long long)(uint32_t)i);
return jsvNewFromInteger(i);
}

View File

@ -44,5 +44,9 @@ d.setUint32(0,0x12345678,true)
test("d.getUint32(0,true)", "0x12345678");
d.setUint32(0,0x12345678)
test("d.getUint32(0)", "0x12345678");
d.setUint32(0,0xffff5678,true) // sign-bit value
test("d.getUint32(0,true)", "0xffff5678");
d.setUint32(0,0xffff5678) // sign-bit value
test("d.getUint32(0)", "0xffff5678");
result = testsRun==testsPass;