Bug 1551501 - Fix BinASTTokenReaderContext::readVarU32 to match encoder. r=Yoric

Differential Revision: https://phabricator.services.mozilla.com/D31054

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Tooru Fujisawa 2019-05-20 10:39:45 +00:00
parent e5a6a8ae9a
commit eb742449ca

View File

@ -165,6 +165,7 @@ JS::Result<Ok> BinASTTokenReaderContext::AutoList::done() {
}
// Internal uint32_t
// Note that this is different than varnum in multipart.
//
// Encoded as variable length number.
@ -176,7 +177,7 @@ MOZ_MUST_USE JS::Result<uint32_t> BinASTTokenReaderContext::readVarU32() {
uint32_t byte;
MOZ_TRY_VAR(byte, readByte());
const uint32_t newResult = result | (byte >> 1) << shift;
const uint32_t newResult = result | (byte & 0x7f) << shift;
if (newResult < result) {
return raiseError("Overflow during readVarU32");
}
@ -184,7 +185,7 @@ MOZ_MUST_USE JS::Result<uint32_t> BinASTTokenReaderContext::readVarU32() {
result = newResult;
shift += 7;
if ((byte & 1) == 0) {
if ((byte & 0x80) == 0) {
return result;
}