Reviewed by Maciej.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Apr 2006 00:13:50 +0000 (00:13 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 6 Apr 2006 00:13:50 +0000 (00:13 +0000)
        - fix memory leak introduced by the previous change

        * kxmlcore/HashTable.h: Specialize NeedsRef so that it correctly returns true when
        the value in question is a pair where one of the pair needs a ref and the other
        of the pair does not.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@13709 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/kxmlcore/HashTable.h

index ed8416d0517925796374c61ab6c3659c3d3fe6e2..30e7ce05ce8b024b16c25cdc5db4bf17763195cd 100644 (file)
@@ -1,3 +1,13 @@
+2006-04-05  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - fix memory leak introduced by the previous change
+
+        * kxmlcore/HashTable.h: Specialize NeedsRef so that it correctly returns true when
+        the value in question is a pair where one of the pair needs a ref and the other
+        of the pair does not.
+
 2006-04-05  Darin Adler  <darin@apple.com>
 
         Reviewed by Maciej.
 2006-04-05  Darin Adler  <darin@apple.com>
 
         Reviewed by Maciej.
index adc697d5094bd883033a964bd11dc954024554b8..31bf57736a468ddddd54947d30e9ab1163c7be09 100644 (file)
@@ -835,6 +835,14 @@ namespace KXMLCore {
     template<typename ValueTraits, typename ValueStorageTraits> struct NeedsRef {
         static const bool value = ValueTraits::needsRef && !ValueStorageTraits::needsRef;
     };
     template<typename ValueTraits, typename ValueStorageTraits> struct NeedsRef {
         static const bool value = ValueTraits::needsRef && !ValueStorageTraits::needsRef;
     };
+    template<typename FirstTraits, typename SecondTraits, typename ValueStorageTraits>
+    struct NeedsRef<PairBaseHashTraits<FirstTraits, SecondTraits>, ValueStorageTraits> {
+        typedef typename ValueStorageTraits::FirstTraits FirstStorageTraits;
+        typedef typename ValueStorageTraits::SecondTraits SecondStorageTraits;
+        static const bool firstNeedsRef = NeedsRef<FirstTraits, FirstStorageTraits>::value;
+        static const bool secondNeedsRef = NeedsRef<SecondTraits, SecondStorageTraits>::value;
+        static const bool value = firstNeedsRef || secondNeedsRef;
+    };
 
     template<bool needsRef, typename ValueTraits> struct RefCounterBase;
 
 
     template<bool needsRef, typename ValueTraits> struct RefCounterBase;