Bug 1428860 - XULDocument::GetElementsByAttributeNS may leak memory r?peterv draft
authorJean-Luc Bonnafoux <jeanluc.bonnafoux@wanadoo.fr>
Sun, 25 Feb 2018 12:07:52 +0100
changeset 759514 cfadc5861d959cd16e5485625c7bfb8d992e0727
parent 759513 b598047aa8c9ec6a7138d40c48d4de49dc0541a5
child 762889 8bc31085c68fac6d9bdb084fa1a455419850e0fd
push id100375
push userbmo:jeanluc.bonnafoux@wanadoo.fr
push dateSun, 25 Feb 2018 11:09:26 +0000
reviewerspeterv
bugs1428860
milestone59.0a1
Bug 1428860 - XULDocument::GetElementsByAttributeNS may leak memory r?peterv MozReview-Commit-ID: 5NjViIoivG1
dom/xul/XULDocument.cpp
--- a/dom/xul/XULDocument.cpp
+++ b/dom/xul/XULDocument.cpp
@@ -1068,52 +1068,52 @@ XULDocument::ResolveForwardReferences()
 // nsIDOMDocument interface
 //
 
 already_AddRefed<nsINodeList>
 XULDocument::GetElementsByAttribute(const nsAString& aAttribute,
                                     const nsAString& aValue)
 {
     RefPtr<nsAtom> attrAtom(NS_Atomize(aAttribute));
-    void* attrValue = new nsString(aValue);
+    nsAutoPtr<nsString> attrValue(new nsString(aValue));
     RefPtr<nsContentList> list = new nsContentList(this,
                                             MatchAttribute,
                                             nsContentUtils::DestroyMatchString,
-                                            attrValue,
+                                            attrValue.forget(),
                                             true,
                                             attrAtom,
                                             kNameSpaceID_Unknown);
 
     return list.forget();
 }
 
 already_AddRefed<nsINodeList>
 XULDocument::GetElementsByAttributeNS(const nsAString& aNamespaceURI,
                                       const nsAString& aAttribute,
                                       const nsAString& aValue,
                                       ErrorResult& aRv)
 {
     RefPtr<nsAtom> attrAtom(NS_Atomize(aAttribute));
-    void* attrValue = new nsString(aValue);
+    nsAutoPtr<nsString> attrValue(new nsString(aValue));
 
     int32_t nameSpaceId = kNameSpaceID_Wildcard;
     if (!aNamespaceURI.EqualsLiteral("*")) {
       nsresult rv =
         nsContentUtils::NameSpaceManager()->RegisterNameSpace(aNamespaceURI,
                                                               nameSpaceId);
       if (NS_FAILED(rv)) {
           aRv.Throw(rv);
           return nullptr;
       }
     }
 
     RefPtr<nsContentList> list = new nsContentList(this,
                                             MatchAttribute,
                                             nsContentUtils::DestroyMatchString,
-                                            attrValue,
+                                            attrValue.forget(),
                                             true,
                                             attrAtom,
                                             nameSpaceId);
     return list.forget();
 }
 
 void
 XULDocument::Persist(const nsAString& aID,