Bug 605908 - test_parent.js leaks objects. Part 2: enumerator leaks. r=jdm, a=sdwilsh

This commit is contained in:
Dan Witte 2010-10-21 11:36:39 -07:00
parent a6e5900b55
commit 9e58316d52

View File

@ -68,7 +68,6 @@
#include "nsConsoleMessage.h" #include "nsConsoleMessage.h"
#ifdef MOZ_PERMISSIONS #ifdef MOZ_PERMISSIONS
#include "nsPermission.h"
#include "nsPermissionManager.h" #include "nsPermissionManager.h"
#endif #endif
@ -226,16 +225,17 @@ ContentParent::RecvReadPermissions(nsTArray<IPC::Permission>* aPermissions)
NS_ABORT_IF_FALSE(permissionManager, NS_ABORT_IF_FALSE(permissionManager,
"We have no permissionManager in the Chrome process !"); "We have no permissionManager in the Chrome process !");
nsISimpleEnumerator *enumerator; nsCOMPtr<nsISimpleEnumerator> enumerator;
nsresult rv = permissionManager->GetEnumerator(&enumerator); nsresult rv = permissionManager->GetEnumerator(getter_AddRefs(enumerator));
NS_ABORT_IF_FALSE(NS_SUCCEEDED(rv), "Could not get enumerator!"); NS_ABORT_IF_FALSE(NS_SUCCEEDED(rv), "Could not get enumerator!");
while(1) { while(1) {
PRBool hasMore; PRBool hasMore;
enumerator->HasMoreElements(&hasMore); enumerator->HasMoreElements(&hasMore);
if (!hasMore) if (!hasMore)
break; break;
nsISupports *supp;
enumerator->GetNext((nsISupports**)&supp); nsCOMPtr<nsISupports> supp;
enumerator->GetNext(getter_AddRefs(supp));
nsCOMPtr<nsIPermission> perm = do_QueryInterface(supp); nsCOMPtr<nsIPermission> perm = do_QueryInterface(supp);
nsCString host; nsCString host;