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

darin darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:39:10 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 2b46a401503af63d73ffd56b5f675b076f61f120
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sat Sep 14 00:35:43 2002 +0000

    	Fix crash in slot code.
    
            * kwq/KWQSignal.mm: (KWQSignal::call): Copy the slots before
    	calling through in case we are destroyed by the called function.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@2065 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index f701a5e..1668489 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,5 +1,12 @@
 2002-09-13  Darin Adler  <darin at apple.com>
 
+	Fix crash in slot code.
+
+        * kwq/KWQSignal.mm: (KWQSignal::call): Copy the slots before
+	calling through in case we are destroyed by the called function.
+
+2002-09-13  Darin Adler  <darin at apple.com>
+
 	Here's the *real* mistake that killed plugins. I accidentally
 	stopped creating objects at all! Duh. Fixed now.
 
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index f701a5e..1668489 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,5 +1,12 @@
 2002-09-13  Darin Adler  <darin at apple.com>
 
+	Fix crash in slot code.
+
+        * kwq/KWQSignal.mm: (KWQSignal::call): Copy the slots before
+	calling through in case we are destroyed by the called function.
+
+2002-09-13  Darin Adler  <darin at apple.com>
+
 	Here's the *real* mistake that killed plugins. I accidentally
 	stopped creating objects at all! Duh. Fixed now.
 
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index f701a5e..1668489 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,5 +1,12 @@
 2002-09-13  Darin Adler  <darin at apple.com>
 
+	Fix crash in slot code.
+
+        * kwq/KWQSignal.mm: (KWQSignal::call): Copy the slots before
+	calling through in case we are destroyed by the called function.
+
+2002-09-13  Darin Adler  <darin at apple.com>
+
 	Here's the *real* mistake that killed plugins. I accidentally
 	stopped creating objects at all! Duh. Fixed now.
 
diff --git a/WebCore/kwq/KWQSignal.mm b/WebCore/kwq/KWQSignal.mm
index d99bffa..c964a43 100644
--- a/WebCore/kwq/KWQSignal.mm
+++ b/WebCore/kwq/KWQSignal.mm
@@ -78,8 +78,12 @@ void KWQSignal::call() const
     if (!m_object->m_signalsBlocked) {
         KWQObjectSenderScope senderScope(m_object);
         const int numSlots = sizeof(m_slots) / sizeof(m_slots[0]);
+        KWQSlot copiedSlots[numSlots];
         for (int i = 0; i != numSlots; ++i) {
-            m_slots[i].call();
+            copiedSlots[i] = m_slots[i];
+        }
+        for (int i = 0; i != numSlots; ++i) {
+            copiedSlots[i].call();
         }
     }
 }
@@ -89,8 +93,12 @@ void KWQSignal::call(bool b) const
     if (!m_object->m_signalsBlocked) {
         KWQObjectSenderScope senderScope(m_object);
         const int numSlots = sizeof(m_slots) / sizeof(m_slots[0]);
+        KWQSlot copiedSlots[numSlots];
         for (int i = 0; i != numSlots; ++i) {
-            m_slots[i].call(b);
+            copiedSlots[i] = m_slots[i];
+        }
+        for (int i = 0; i != numSlots; ++i) {
+            copiedSlots[i].call(b);
         }
     }
 }
@@ -100,8 +108,12 @@ void KWQSignal::call(int j) const
     if (!m_object->m_signalsBlocked) {
         KWQObjectSenderScope senderScope(m_object);
         const int numSlots = sizeof(m_slots) / sizeof(m_slots[0]);
+        KWQSlot copiedSlots[numSlots];
+        for (int i = 0; i != numSlots; ++i) {
+            copiedSlots[i] = m_slots[i];
+        }
         for (int i = 0; i != numSlots; ++i) {
-            m_slots[i].call(j);
+            copiedSlots[i].call(j);
         }
     }
 }
@@ -111,8 +123,12 @@ void KWQSignal::call(const QString &s) const
     if (!m_object->m_signalsBlocked) {
         KWQObjectSenderScope senderScope(m_object);
         const int numSlots = sizeof(m_slots) / sizeof(m_slots[0]);
+        KWQSlot copiedSlots[numSlots];
+        for (int i = 0; i != numSlots; ++i) {
+            copiedSlots[i] = m_slots[i];
+        }
         for (int i = 0; i != numSlots; ++i) {
-            m_slots[i].call(s);
+            copiedSlots[i].call(s);
         }
     }
 }
@@ -122,8 +138,12 @@ void KWQSignal::call(Job *j) const
     if (!m_object->m_signalsBlocked) {
         KWQObjectSenderScope senderScope(m_object);
         const int numSlots = sizeof(m_slots) / sizeof(m_slots[0]);
+        KWQSlot copiedSlots[numSlots];
+        for (int i = 0; i != numSlots; ++i) {
+            copiedSlots[i] = m_slots[i];
+        }
         for (int i = 0; i != numSlots; ++i) {
-            m_slots[i].call(j);
+            copiedSlots[i].call(j);
         }
     }
 }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list