mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
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:
parent
e5a6a8ae9a
commit
eb742449ca
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user