Backed out changeset ef64f4c98cc6 (bug 1409394) for failing browser-chrome's browser_save_link-perwindowpb.js and browser_libraryDrop.js on OS X and leaks detected by chrome test on Linux x64 asan. r=backout on a CLOSED TREE

This commit is contained in:
Sebastian Hengst 2017-10-17 22:23:30 +02:00
Родитель b1cdb2af00
Коммит 50123e0062
1 изменённых файлов: 26 добавлений и 58 удалений

Просмотреть файл

@ -264,37 +264,6 @@ FileReader::DoAsyncWait()
return NS_OK;
}
namespace {
void
PopulateBufferForBinaryString(char16_t* aDest, const char* aSource,
uint32_t aCount)
{
const unsigned char* source = (const unsigned char*)aSource;
char16_t* end = aDest + aCount;
while (aDest != end) {
*aDest = *source;
++aDest;
++source;
}
}
nsresult
ReadFuncBinaryString(nsIInputStream* aInputStream,
void* aClosure,
const char* aFromRawSegment,
uint32_t aToOffset,
uint32_t aCount,
uint32_t* aWriteCount)
{
char16_t* dest = static_cast<char16_t*>(aClosure) + aToOffset;
PopulateBufferForBinaryString(dest, aFromRawSegment, aCount);
*aWriteCount = aCount;
return NS_OK;
}
} // anonymous
nsresult
FileReader::DoReadData(uint64_t aCount)
{
@ -322,11 +291,6 @@ FileReader::DoReadData(uint64_t aCount)
dest += oldLen;
if (NS_InputStreamIsBuffered(mAsyncStream)) {
nsresult rv = mAsyncStream->ReadSegments(ReadFuncBinaryString, dest,
aCount, &bytesRead);
NS_ENSURE_SUCCESS(rv, rv);
} else {
while (aCount > 0) {
char tmpBuffer[4096];
uint32_t minCount =
@ -345,13 +309,17 @@ FileReader::DoReadData(uint64_t aCount)
return NS_ERROR_OUT_OF_MEMORY;
}
PopulateBufferForBinaryString(dest, tmpBuffer, read);
char16_t* end = dest + read;
const unsigned char* source = (const unsigned char*)tmpBuffer;
while (dest != end) {
*dest = *source;
++dest;
++source;
}
dest += read;
aCount -= read;
bytesRead += read;
}
}
MOZ_ASSERT(size.value() == oldLen + bytesRead);
mResult.Truncate(size.value());