зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1917341: nsJar cleanup of ADDREFs/RELEASEs r=necko-reviewers,valentin
Differential Revision: https://phabricator.services.mozilla.com/D221365
This commit is contained in:
Родитель
11a5534f19
Коммит
09374ed3d6
|
@ -248,9 +248,9 @@ nsJAR::GetEntry(const nsACString& aEntryName, nsIZipEntry** result) {
|
|||
nsZipItem* zipItem = mZip->GetItem(PromiseFlatCString(aEntryName).get());
|
||||
NS_ENSURE_TRUE(zipItem, NS_ERROR_FILE_NOT_FOUND);
|
||||
|
||||
nsJARItem* jarItem = new nsJARItem(zipItem);
|
||||
RefPtr<nsJARItem> jarItem = new nsJARItem(zipItem);
|
||||
|
||||
NS_ADDREF(*result = jarItem);
|
||||
*result = jarItem.forget().take();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -280,9 +280,10 @@ nsJAR::FindEntries(const nsACString& aPattern,
|
|||
aPattern.IsEmpty() ? nullptr : PromiseFlatCString(aPattern).get(), &find);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsIUTF8StringEnumerator* zipEnum = new nsJAREnumerator(find);
|
||||
RefPtr<nsIUTF8StringEnumerator> zipEnum = new nsJAREnumerator(find);
|
||||
|
||||
NS_ADDREF(*result = zipEnum);
|
||||
// Callers use getter_addrefs
|
||||
*result = zipEnum.forget().take();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -303,9 +304,7 @@ nsJAR::GetInputStream(const nsACString& aEntryName, nsIInputStream** result) {
|
|||
item = mZip->GetItem(entry.get());
|
||||
if (!item) return NS_ERROR_FILE_NOT_FOUND;
|
||||
}
|
||||
nsJARInputStream* jis = new nsJARInputStream();
|
||||
// addref now so we can call InitFile/InitDirectory()
|
||||
NS_ADDREF(*result = jis);
|
||||
RefPtr<nsJARInputStream> jis = new nsJARInputStream();
|
||||
|
||||
nsresult rv = NS_OK;
|
||||
if (!item || item->IsDirectory()) {
|
||||
|
@ -314,8 +313,9 @@ nsJAR::GetInputStream(const nsACString& aEntryName, nsIInputStream** result) {
|
|||
RefPtr<nsZipHandle> fd = mZip->GetFD();
|
||||
rv = jis->InitFile(fd, mZip->GetData(item), item);
|
||||
}
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_RELEASE(*result);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
// Callers use getter_addrefs
|
||||
*result = jis.forget().take();
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
|
|
@ -70,24 +70,23 @@ nsJARProtocolHandler::GetScheme(nsACString& result) {
|
|||
NS_IMETHODIMP
|
||||
nsJARProtocolHandler::NewChannel(nsIURI* uri, nsILoadInfo* aLoadInfo,
|
||||
nsIChannel** result) {
|
||||
nsJARChannel* chan = new nsJARChannel();
|
||||
if (!chan) return NS_ERROR_OUT_OF_MEMORY;
|
||||
NS_ADDREF(chan);
|
||||
RefPtr<nsJARChannel> chan = new nsJARChannel();
|
||||
if (!chan) {
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
nsresult rv = chan->Init(uri);
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_RELEASE(chan);
|
||||
return rv;
|
||||
}
|
||||
|
||||
// set the loadInfo on the new channel
|
||||
rv = chan->SetLoadInfo(aLoadInfo);
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_RELEASE(chan);
|
||||
return rv;
|
||||
}
|
||||
|
||||
*result = chan;
|
||||
*result = chan.forget().take();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче