Bug 1409329 - NS_NewBufferedOutputStream should take the ownership of the outputStream, r=smaug

This commit is contained in:
Andrea Marchesini 2017-10-17 20:38:05 +02:00
Родитель c9234eab7c
Коммит fe04c2050c
13 изменённых файлов: 36 добавлений и 57 удалений

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

@ -2321,8 +2321,9 @@ nsWebBrowserPersist::MakeOutputStreamFromFile(
rv = fileOutputStream->Init(aFile, ioFlags, -1, 0);
NS_ENSURE_SUCCESS(rv, rv);
*aOutputStream = NS_BufferOutputStream(fileOutputStream,
BUFFERED_OUTPUT_SIZE).take();
rv = NS_NewBufferedOutputStream(aOutputStream, fileOutputStream.forget(),
BUFFERED_OUTPUT_SIZE);
NS_ENSURE_SUCCESS(rv, rv);
if (mPersistFlags & PERSIST_FLAGS_CLEANUP_ON_FAILURE)
{

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

@ -664,8 +664,8 @@ RespondWithHandler::ResolvedCallback(JSContext* aCx, JS::Handle<JS::Value> aValu
// objects which may or many not play well with NS_InputStreamIsBuffered().
if (!NS_OutputStreamIsBuffered(responseBody)) {
nsCOMPtr<nsIOutputStream> buffered;
rv = NS_NewBufferedOutputStream(getter_AddRefs(buffered), responseBody,
kCopySegmentSize);
rv = NS_NewBufferedOutputStream(getter_AddRefs(buffered),
responseBody.forget(), kCopySegmentSize);
if (NS_WARN_IF(NS_FAILED(rv))) {
return;
}

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

@ -105,7 +105,7 @@ public:
// Get a buffered output stream 4096 bytes big, to optimize writes.
nsCOMPtr<nsIOutputStream> bufferedOutputStream;
res = NS_NewBufferedOutputStream(getter_AddRefs(bufferedOutputStream),
outStream, 4096);
outStream.forget(), 4096);
if (NS_FAILED(res)) {
return res;
}

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

@ -270,9 +270,9 @@ NS_IMETHODIMP nsZipWriter::Open(nsIFile *aFile, int32_t aIoFlags)
return rv;
}
rv = NS_NewBufferedOutputStream(getter_AddRefs(mStream), stream, 64 * 1024);
rv = NS_NewBufferedOutputStream(getter_AddRefs(mStream), stream.forget(),
64 * 1024);
if (NS_FAILED(rv)) {
stream->Close();
mHeaders.Clear();
mEntryHash.Clear();
return rv;

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

@ -3534,7 +3534,7 @@ public:
}
rv = NS_NewBufferedOutputStream(
getter_AddRefs(outStream), outStreamSink, 4096);
getter_AddRefs(outStream), outStreamSink.forget(), 4096);
if (NS_FAILED(rv)) {
return rv;
}

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

@ -620,10 +620,9 @@ BackgroundFileSaver::ProcessStateChange()
PR_WRONLY | creationIoFlags, 0600);
NS_ENSURE_SUCCESS(rv, rv);
outputStream = NS_BufferOutputStream(outputStream, BUFFERED_IO_SIZE);
if (!outputStream) {
return NS_ERROR_FAILURE;
}
rv = NS_NewBufferedOutputStream(getter_AddRefs(outputStream),
outputStream.forget(), BUFFERED_IO_SIZE);
NS_ENSURE_SUCCESS(rv, rv);
// Wrap the output stream so that it feeds the digest context if needed.
if (mDigestContext) {

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

@ -1337,38 +1337,24 @@ NS_NewLocalFileStream(nsIFileStream **result,
}
nsresult
NS_NewBufferedOutputStream(nsIOutputStream **result,
nsIOutputStream *str,
uint32_t bufferSize)
NS_NewBufferedOutputStream(nsIOutputStream** aResult,
already_AddRefed<nsIOutputStream> aOutputStream,
uint32_t aBufferSize)
{
nsCOMPtr<nsIOutputStream> outputStream = Move(aOutputStream);
nsresult rv;
nsCOMPtr<nsIBufferedOutputStream> out =
do_CreateInstance(NS_BUFFEREDOUTPUTSTREAM_CONTRACTID, &rv);
if (NS_SUCCEEDED(rv)) {
rv = out->Init(str, bufferSize);
rv = out->Init(outputStream, aBufferSize);
if (NS_SUCCEEDED(rv)) {
out.forget(result);
out.forget(aResult);
}
}
return rv;
}
already_AddRefed<nsIOutputStream>
NS_BufferOutputStream(nsIOutputStream *aOutputStream,
uint32_t aBufferSize)
{
NS_ASSERTION(aOutputStream, "No output stream given!");
nsCOMPtr<nsIOutputStream> bos;
nsresult rv = NS_NewBufferedOutputStream(getter_AddRefs(bos), aOutputStream,
aBufferSize);
if (NS_SUCCEEDED(rv))
return bos.forget();
bos = aOutputStream;
return bos.forget();
}
MOZ_MUST_USE nsresult
NS_NewBufferedInputStream(nsIInputStream **result,
nsIInputStream *str,

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

@ -517,24 +517,10 @@ NS_NewBufferedInputStream(nsIInputStream **result,
// note: the resulting stream can be QI'ed to nsISafeOutputStream iff the
// provided stream supports it.
nsresult NS_NewBufferedOutputStream(nsIOutputStream **result,
nsIOutputStream *str,
uint32_t bufferSize);
/**
* Attempts to buffer a given stream. If this fails, it returns the
* passed-in stream.
*
* @param aOutputStream
* The output stream we want to buffer. This cannot be null.
* @param aBufferSize
* The size of the buffer for the buffered output stream.
* @returns an nsIOutputStream that is buffered with the specified buffer size,
* or is aOutputStream if creating the new buffered stream failed.
*/
already_AddRefed<nsIOutputStream>
NS_BufferOutputStream(nsIOutputStream *aOutputStream,
nsresult NS_NewBufferedOutputStream(nsIOutputStream** aResult,
already_AddRefed<nsIOutputStream> aOutputStream,
uint32_t aBufferSize);
already_AddRefed<nsIInputStream>
NS_BufferInputStream(nsIInputStream *aInputStream,
uint32_t aBufferSize);

3
netwerk/cache/nsDiskCacheDeviceSQL.cpp поставляемый
Просмотреть файл

@ -1815,7 +1815,8 @@ nsOfflineCacheDevice::OpenOutputStreamForEntry(nsCacheEntry *entry,
nsCOMPtr<nsIOutputStream> bufferedOut;
nsresult rv =
NS_NewBufferedOutputStream(getter_AddRefs(bufferedOut), out, 16 * 1024);
NS_NewBufferedOutputStream(getter_AddRefs(bufferedOut), out.forget(),
16 * 1024);
NS_ENSURE_SUCCESS(rv, rv);
bufferedOut.swap(*result);

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

@ -766,7 +766,8 @@ RDFXMLDataSourceImpl::rdfXMLFlush(nsIURI *aURI)
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIOutputStream> bufferedOut;
rv = NS_NewBufferedOutputStream(getter_AddRefs(bufferedOut), out, 4096);
rv = NS_NewBufferedOutputStream(getter_AddRefs(bufferedOut),
out.forget(), 4096);
if (NS_FAILED(rv)) return rv;
rv = Serialize(bufferedOut);

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

@ -281,7 +281,8 @@ nsCertOverrideService::Write(const MutexAutoLock& aProofOfLock)
// get a buffered output stream 4096 bytes big, to optimize writes
nsCOMPtr<nsIOutputStream> bufferedOutputStream;
rv = NS_NewBufferedOutputStream(getter_AddRefs(bufferedOutputStream), fileOutputStream, 4096);
rv = NS_NewBufferedOutputStream(getter_AddRefs(bufferedOutputStream),
fileOutputStream.forget(), 4096);
if (NS_FAILED(rv)) {
return rv;
}

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

@ -275,8 +275,10 @@ VariableLengthPrefixSet::StoreToFile(nsIFile* aFile)
}
// Convert to buffered stream
nsCOMPtr<nsIOutputStream> out =
NS_BufferOutputStream(localOutFile, std::min(fileSize, MAX_BUFFER_SIZE));
nsCOMPtr<nsIOutputStream> out;
rv = NS_NewBufferedOutputStream(getter_AddRefs(out), localOutFile.forget(),
std::min(fileSize, MAX_BUFFER_SIZE));
NS_ENSURE_SUCCESS(rv, rv);
rv = mFixedPrefixSet->WritePrefixes(out);
NS_ENSURE_SUCCESS(rv, rv);

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

@ -385,8 +385,10 @@ nsUrlClassifierPrefixSet::StoreToFile(nsIFile* aFile)
}
// Convert to buffered stream
nsCOMPtr<nsIOutputStream> out =
NS_BufferOutputStream(localOutFile, std::min(fileSize, MAX_BUFFER_SIZE));
nsCOMPtr<nsIOutputStream> out;
rv = NS_NewBufferedOutputStream(getter_AddRefs(out), localOutFile.forget(),
std::min(fileSize, MAX_BUFFER_SIZE));
NS_ENSURE_SUCCESS(rv, rv);
rv = WritePrefixes(out);
NS_ENSURE_SUCCESS(rv, rv);