[PATCH] mfsa2006-32 (Part 5/7), 327712

Alexander Sack asac at debian.org
Sun Jun 18 12:13:07 UTC 2006


From: Alexander Sack <asac at hanson.localdomain>

---

 content/xbl/src/nsXBLProtoImplProperty.cpp |   20 ++++++++++++++++++--
 1 files changed, 18 insertions(+), 2 deletions(-)

ecbd711fde7736c155c661f2684677011397a062
diff --git a/content/xbl/src/nsXBLProtoImplProperty.cpp b/content/xbl/src/nsXBLProtoImplProperty.cpp
index 59f0248..96e50cd 100644
--- a/content/xbl/src/nsXBLProtoImplProperty.cpp
+++ b/content/xbl/src/nsXBLProtoImplProperty.cpp
@@ -164,18 +164,34 @@ nsXBLProtoImplProperty::InstallMember(ns
     if (mJSGetterObject)
       if (!(getter = ::JS_CloneFunctionObject(cx, mJSGetterObject, globalObject)))
         return NS_ERROR_OUT_OF_MEMORY;
-    
+ 
+    nsresult rv;
+    rv = AddJSGCRoot(&getter, "nsAutoGCRoot"); 
+    NS_ENSURE_SUCCESS(rv, rv);
+
     JSObject * setter = nsnull;
     if (mJSSetterObject)
-      if (!(setter = ::JS_CloneFunctionObject(cx, mJSSetterObject, globalObject)))
+      if (!(setter = ::JS_CloneFunctionObject(cx, mJSSetterObject, globalObject))) 
+      {
+        RemoveJSGCRoot(&getter);   
         return NS_ERROR_OUT_OF_MEMORY;
+      }
+
+    rv = AddJSGCRoot(&setter, "nsAutoGCRoot");
+    NS_ENSURE_SUCCESS(rv, rv);
 
     nsDependentString name(mName);
     if (!::JS_DefineUCProperty(cx, targetClassObject,
                                NS_REINTERPRET_CAST(const jschar*, mName), 
                                name.Length(), JSVAL_VOID,  (JSPropertyOp) getter, 
                                (JSPropertyOp) setter, mJSAttributes))
+    {
+      RemoveJSGCRoot(&setter);
       return NS_ERROR_OUT_OF_MEMORY;
+    }
+
+    RemoveJSGCRoot(&getter);
+    RemoveJSGCRoot(&setter);
   }
   return NS_OK;
 }
-- 
1.3.3




More information about the pkg-mozilla-maintainers mailing list