Merge remote-tracking branch 'origin/tracking' into custom

This commit is contained in:
roytam1 2023-05-11 09:29:55 +08:00
commit 462805f0ee
4 changed files with 49 additions and 18 deletions

View file

@ -154,6 +154,10 @@ nsJPEGDecoder::InitInternal()
mSourceMgr.skip_input_data = skip_input_data;
mSourceMgr.resync_to_restart = jpeg_resync_to_restart;
mSourceMgr.term_source = term_source;
// Limit the maximum allocation to the maximum our surface cache can hold.
mInfo.mem->max_memory_to_use = static_cast<long>(
std::min<size_t>(SurfaceCache::MaximumCapacity(), LONG_MAX));
// Record app markers for ICC data
for (uint32_t m = 0; m < 16; m++) {

View file

@ -1398,6 +1398,8 @@ pref("network.protocol-handler.external.shell", false);
pref("network.protocol-handler.external.vbscript", false);
pref("network.protocol-handler.external.vnd.ms.radio", false);
#ifdef XP_WIN
pref("network.protocol-handler.external.ms-cxh", false);
pref("network.protocol-handler.external.ms-cxh-full", false);
pref("network.protocol-handler.external.ms-help", false);
pref("network.protocol-handler.external.ms-msdt", false);
pref("network.protocol-handler.external.search", false);

View file

@ -201,9 +201,11 @@ static DllBlockInfo sWindowsDllBlocklist[] = {
// ESET, bug 1229252
{ "eoppmonitor.dll", ALL_VERSIONS },
// SS2OSD, bug 1262348
// SS2OSD, Sonic Studio, bugs 1262348, 1540883
{ "ss2osd.dll", ALL_VERSIONS },
{ "ss3osd.dll", ALL_VERSIONS },
{ "ss2devprops.dll", ALL_VERSIONS },
{ "ss3devprops.dll", ALL_VERSIONS },
// NHASUSSTRIXOSD.DLL, bug 1269244
{ "nhasusstrixosd.dll", ALL_VERSIONS },

View file

@ -121,25 +121,48 @@ nsDataObj::CStream::OnDataAvailable(nsIRequest *aRequest,
uint64_t aOffset, // offset within the stream
uint32_t aCount) // bytes available on this call
{
// Extend the write buffer for the incoming data.
uint8_t* buffer = mChannelData.AppendElements(aCount, fallible);
if (!buffer) {
return NS_ERROR_OUT_OF_MEMORY;
}
NS_ASSERTION((mChannelData.Length() == (aOffset + aCount)),
"stream length mismatch w/write buffer");
// Read() may not return aCount on a single call, so loop until we've
// accumulated all the data OnDataAvailable has promised.
nsresult rv;
uint32_t odaBytesReadTotal = 0;
do {
uint32_t bytesReadByCall = 0;
rv = aInputStream->Read((char*)(buffer + odaBytesReadTotal),
aCount, &bytesReadByCall);
odaBytesReadTotal += bytesReadByCall;
} while (aCount < odaBytesReadTotal && NS_SUCCEEDED(rv));
// If we've been asked to read zero bytes, call `Read` once, just to ensure
// any side-effects take place, and return immediately.
if (aCount == 0) {
char buffer[1] = {0};
uint32_t bytesReadByCall = 0;
nsresult rv = aInputStream->Read(buffer, 0, &bytesReadByCall);
MOZ_ASSERT(bytesReadByCall == 0);
return rv;
}
// Extend the write buffer for the incoming data.
size_t oldLength = mChannelData.Length();
char* buffer = reinterpret_cast<char*>(mChannelData.AppendElements(aCount, fallible));
if (!buffer) {
return NS_ERROR_OUT_OF_MEMORY;
}
MOZ_ASSERT(mChannelData.Length() == (aOffset + aCount),
"stream length mismatch w/write buffer");
// Read() may not return aCount on a single call, so loop until we've
// accumulated all the data OnDataAvailable has promised.
uint32_t bytesRead = 0;
while (bytesRead < aCount) {
uint32_t bytesReadByCall = 0;
nsresult rv = aInputStream->Read(buffer + bytesRead, aCount - bytesRead,
&bytesReadByCall);
bytesRead += bytesReadByCall;
if (bytesReadByCall == 0) {
// A `bytesReadByCall` of zero indicates EOF without failure... but we
// were promised `aCount` elements and haven't gotten them. Return a
// generic failure.
rv = NS_ERROR_FAILURE;
}
if (NS_FAILED(rv)) {
// Drop any trailing uninitialized elements before erroring out.
mChannelData.RemoveElementsAt(oldLength + bytesRead, aCount - bytesRead);
return rv;
}
}
return NS_OK;
}
NS_IMETHODIMP nsDataObj::CStream::OnStartRequest(nsIRequest *aRequest,