[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

mjs mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:15:06 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 503dd63d5b490a1220d97828007be1172b23892e
Author: mjs <mjs at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon May 27 08:58:31 2002 +0000

    	Fixed the vexing and long-standing:
    
    	Radar 2894699 - Crash at: http://cb.apple.com/jsplugins.html
    
    	* khtml/ecma/kjs_navigator.cpp: This crash was caused by Plugin
    	and MimeType objects referring to data that was held and
    	refcounted by PluginBase, without holding a ref. I fixed it by
    	making these individual items participate in the refcounting as
    	well.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@1220 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 4a3ee6c..34e9c5c 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,15 @@
+2002-05-27  Maciej Stachowiak  <mjs at apple.com>
+
+	Fixed the vexing and long-standing:
+
+	Radar 2894699 - Crash at: http://cb.apple.com/jsplugins.html
+	
+	* khtml/ecma/kjs_navigator.cpp: This crash was caused by Plugin
+	and MimeType objects referring to data that was held and
+	refcounted by PluginBase, without holding a ref. I fixed it by
+	making these individual items participate in the refcounting as
+	well.
+
 2002-05-26  Maciej Stachowiak  <mjs at apple.com>
 
 	Webcore part of fix for:
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 4a3ee6c..34e9c5c 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,15 @@
+2002-05-27  Maciej Stachowiak  <mjs at apple.com>
+
+	Fixed the vexing and long-standing:
+
+	Radar 2894699 - Crash at: http://cb.apple.com/jsplugins.html
+	
+	* khtml/ecma/kjs_navigator.cpp: This crash was caused by Plugin
+	and MimeType objects referring to data that was held and
+	refcounted by PluginBase, without holding a ref. I fixed it by
+	making these individual items participate in the refcounting as
+	well.
+
 2002-05-26  Maciej Stachowiak  <mjs at apple.com>
 
 	Webcore part of fix for:
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 4a3ee6c..34e9c5c 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,15 @@
+2002-05-27  Maciej Stachowiak  <mjs at apple.com>
+
+	Fixed the vexing and long-standing:
+
+	Radar 2894699 - Crash at: http://cb.apple.com/jsplugins.html
+	
+	* khtml/ecma/kjs_navigator.cpp: This crash was caused by Plugin
+	and MimeType objects referring to data that was held and
+	refcounted by PluginBase, without holding a ref. I fixed it by
+	making these individual items participate in the refcounting as
+	well.
+
 2002-05-26  Maciej Stachowiak  <mjs at apple.com>
 
 	Webcore part of fix for:
diff --git a/WebCore/khtml/ecma/kjs_navigator.cpp b/WebCore/khtml/ecma/kjs_navigator.cpp
index b874a8f..63a5d71 100644
--- a/WebCore/khtml/ecma/kjs_navigator.cpp
+++ b/WebCore/khtml/ecma/kjs_navigator.cpp
@@ -61,6 +61,10 @@ namespace KJS {
 
         static QPtrList<PluginInfo> *plugins;
         static QPtrList<MimeClassInfo> *mimes;
+#ifdef APPLE_CHANGES
+        static void ref();
+        static void unref();
+#endif
 
     private:
         static int m_refCount;
@@ -91,9 +95,17 @@ namespace KJS {
 
     class Plugin : public ObjectImp {
     public:
+#ifdef APPLE_CHANGES
+        Plugin( ExecState *exec, PluginBase::PluginInfo *info )
+          : ObjectImp(exec->interpreter()->builtinObjectPrototype() )
+        { m_info = info; PluginBase::ref(); };
+        virtual ~Plugin()
+        { PluginBase::unref(); }
+#else
         Plugin( ExecState *exec, PluginBase::PluginInfo *info )
           : ObjectImp(exec->interpreter()->builtinObjectPrototype() )
         { m_info = info; };
+#endif
         virtual Value get(ExecState *exec, const UString &propertyName) const;
         virtual const ClassInfo* classInfo() const { return &info; }
         static const ClassInfo info;
@@ -105,9 +117,17 @@ namespace KJS {
 
     class MimeType : public ObjectImp {
     public:
+#ifdef APPLE_CHANGES
+        MimeType( ExecState *exec, PluginBase::MimeClassInfo *info )
+          : ObjectImp(exec->interpreter()->builtinObjectPrototype() )
+        { m_info = info; PluginBase::ref(); };
+        virtual ~MimeType()
+        { PluginBase::unref(); }
+#else
         MimeType( ExecState *exec, PluginBase::MimeClassInfo *info )
           : ObjectImp(exec->interpreter()->builtinObjectPrototype() )
         { m_info = info; };
+#endif
         virtual Value get(ExecState *exec, const UString &propertyName) const;
         virtual const ClassInfo* classInfo() const { return &info; }
         static const ClassInfo info;
@@ -279,6 +299,25 @@ PluginBase::~PluginBase()
     }
 }
 
+#ifdef APPLE_CHANGES
+void PluginBase::ref()
+{
+  m_refCount++;
+}
+
+void PluginBase::unref()
+{
+    m_refCount--;
+    if ( m_refCount==0 ) {
+        delete plugins;
+        delete mimes;
+        plugins = 0;
+        mimes = 0;
+    }
+}
+
+#endif
+
 
 /*******************************************************************/
 IMPLEMENT_PROTOFUNC(PluginsFunc)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list