diff --git a/js/src/builtin/Promise.cpp b/js/src/builtin/Promise.cpp index daeb2c3d68..7d4c232f2e 100644 --- a/js/src/builtin/Promise.cpp +++ b/js/src/builtin/Promise.cpp @@ -537,8 +537,12 @@ JSObject* PromiseObject::resolutionSite() { auto debugInfo = PromiseDebugInfo::FromPromise(this); - if (debugInfo) - return debugInfo->resolutionSite(); + if (debugInfo) { + JSObject* site = debugInfo->resolutionSite(); + if (site && !JS_IsDeadWrapper(site)) { + return site; + } + } return nullptr; } diff --git a/netwerk/protocol/http/AlternateServices.cpp b/netwerk/protocol/http/AlternateServices.cpp index cbb28b58de..aee42fe744 100644 --- a/netwerk/protocol/http/AlternateServices.cpp +++ b/netwerk/protocol/http/AlternateServices.cpp @@ -755,13 +755,14 @@ TransactionObserver::OnDataAvailable(nsIRequest *aRequest, nsISupports *aContext nsIInputStream *aStream, uint64_t aOffset, uint32_t aCount) { MOZ_ASSERT(NS_IsMainThread()); - uint64_t newLen = aCount + mWKResponse.Length(); + uint64_t oldLen = static_cast(mWKResponse.Length()); + uint64_t newLen = static_cast(aCount) + oldLen; if (newLen < MAX_WK) { - char *startByte = reinterpret_cast(mWKResponse.BeginWriting()) + mWKResponse.Length(); + char *startByte = reinterpret_cast(mWKResponse.BeginWriting()) + oldLen; uint32_t amtRead; if (NS_SUCCEEDED(aStream->Read(startByte, aCount, &amtRead))) { - MOZ_ASSERT(mWKResponse.Length() + amtRead < MAX_WK); - mWKResponse.SetLength(mWKResponse.Length() + amtRead); + MOZ_ASSERT(oldLen + amtRead < MAX_WK); + mWKResponse.SetLength(oldLen + amtRead); LOG(("TransactionObserver onDataAvailable %p read %d of .wk [%d]\n", this, amtRead, mWKResponse.Length())); } else {