Bug 1490235 - Use nsDependentCSubstring in AltDataOutputStreamChild::WriteDataInChunks r=mayhemer

Simply replace the nsCString with nsDependentCSubstring to avoid copying the data. In this way, we can also avoid the potential OOM crash.

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

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Kershaw Chang 2018-09-25 16:56:16 +00:00
Родитель 1c46cdfb02
Коммит dc8eeee6b9
2 изменённых файлов: 3 добавлений и 3 удалений

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

@ -59,7 +59,7 @@ AltDataOutputStreamChild::ReleaseIPDLReference()
}
bool
AltDataOutputStreamChild::WriteDataInChunks(const nsCString& data)
AltDataOutputStreamChild::WriteDataInChunks(const nsDependentCSubstring& data)
{
const uint32_t kChunkSize = 128*1024;
uint32_t next = std::min(data.Length(), kChunkSize);
@ -110,7 +110,7 @@ AltDataOutputStreamChild::Write(const char * aBuf, uint32_t aCount, uint32_t *_r
if (NS_FAILED(mError)) {
return mError;
}
if (WriteDataInChunks(nsCString(aBuf, aCount))) {
if (WriteDataInChunks(nsDependentCSubstring(aBuf, aCount))) {
*_retval = aCount;
return NS_OK;
}

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

@ -32,7 +32,7 @@ public:
private:
virtual ~AltDataOutputStreamChild() = default;
// Sends data to the parent process in 256k chunks.
bool WriteDataInChunks(const nsCString& data);
bool WriteDataInChunks(const nsDependentCSubstring& data);
bool mIPCOpen;
// If there was an error opening the output stream or writing to it on the