[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

agl at chromium.org agl at chromium.org
Thu Apr 8 00:28:41 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit a037148a1f2061504a705b2efc0ec906fc342898
Author: agl at chromium.org <agl at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Dec 9 01:43:05 2009 +0000

    2009-12-08  Adam Langley  <agl at google.com>
    
            Reviewed by Darin Adler.
    
            Fix assertion failure in WebCore::RenderBlock::startDelayUpdateScrollInfo
    
            startDelayUpdateScrollInfo calls a function that can end up calling
            startDelayUpdateScrollInfo again. However, it's static state is
            inconsistent when this happens leading to an assertion failure (or
            probably a memory leak if assertions are off).
    
            Thanks to Robert Swiecki for the test case.
    
            https://bugs.webkit.org/show_bug.cgi?id=32172
            http://code.google.com/p/chromium/issues/detail?id=28880
    
            Test: fast/css/recursive-delay-update-scroll.html
    
            * rendering/RenderBlock.cpp:
            (WebCore::RenderBlock::finishDelayUpdateScrollInfo):
    
    2009-12-08  Adam Langley  <agl at google.com>
    
            Reviewed by Darin Adler.
    
            Fix assertion failure in WebCore::RenderBlock::startDelayUpdateScrollInfo
    
            startDelayUpdateScrollInfo calls a function that can end up calling
            startDelayUpdateScrollInfo again. However, it's static state is
            inconsistent when this happens leading to an assertion failure (or
            probably a memory leak if assertions are off).
    
            Thanks to Robert Swiecki for the test case.
    
            https://bugs.webkit.org/show_bug.cgi?id=32172
            http://code.google.com/p/chromium/issues/detail?id=28880
    
            * fast/css/recursive-delay-update-scroll.html: Added.
            * fast/css/recursive-delay-update-scroll-expected.txt: Added.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@51883 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 258cfcc..233b0a3 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,23 @@
+2009-12-08  Adam Langley  <agl at google.com>
+
+        Reviewed by Darin Adler.
+
+        Fix assertion failure in WebCore::RenderBlock::startDelayUpdateScrollInfo
+
+        startDelayUpdateScrollInfo calls a function that can end up calling
+        startDelayUpdateScrollInfo again. However, it's static state is
+        inconsistent when this happens leading to an assertion failure (or
+        probably a memory leak if assertions are off).
+
+        Thanks to Robert Swiecki for the test case.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32172
+        http://code.google.com/p/chromium/issues/detail?id=28880
+
+
+        * fast/css/recursive-delay-update-scroll.html: Added.
+        * fast/css/recursive-delay-update-scroll-expected.txt: Added.
+
 2009-12-08  Nikolas Zimmermann  <nzimmermann at rim.com>
 
         Not reviewed. Skip another failing media test, that I already mentioned in the bug report.
diff --git a/LayoutTests/editing/selection/doubleclick-whitespace-img-crash-expected.txt b/LayoutTests/fast/css/recursive-delay-update-scroll-expected.txt
similarity index 100%
copy from LayoutTests/editing/selection/doubleclick-whitespace-img-crash-expected.txt
copy to LayoutTests/fast/css/recursive-delay-update-scroll-expected.txt
diff --git a/LayoutTests/fast/css/recursive-delay-update-scroll.html b/LayoutTests/fast/css/recursive-delay-update-scroll.html
new file mode 100644
index 0000000..cc29ed1
--- /dev/null
+++ b/LayoutTests/fast/css/recursive-delay-update-scroll.html
@@ -0,0 +1,32 @@
+<html>
+ <head>
+   <script>
+     if (window.layoutTestController)
+       layoutTestController.dumpAsText();
+   </script>
+
+   <style media="all" type="text/css">
+      body {
+        display: -webkit-box;
+      }
+
+      .test {
+        margin-right: -1000000;
+        overflow-y: auto;
+      }
+    </style>
+  </head>
+
+  <body>
+    <!-- This would previously trigger an assertion failure. Thanks to Robert
+         Swiecki for the test case. -->
+
+    <form class="test">
+      <select class="test">
+        <option>1</option>
+      </select>
+    </form>
+
+    <p>PASS</p>
+  </body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 5b82e83..6f5b02c 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,24 @@
+2009-12-08  Adam Langley  <agl at google.com>
+
+        Reviewed by Darin Adler.
+
+        Fix assertion failure in WebCore::RenderBlock::startDelayUpdateScrollInfo
+
+        startDelayUpdateScrollInfo calls a function that can end up calling
+        startDelayUpdateScrollInfo again. However, it's static state is
+        inconsistent when this happens leading to an assertion failure (or
+        probably a memory leak if assertions are off).
+
+        Thanks to Robert Swiecki for the test case.
+
+        https://bugs.webkit.org/show_bug.cgi?id=32172
+        http://code.google.com/p/chromium/issues/detail?id=28880
+
+        Test: fast/css/recursive-delay-update-scroll.html
+
+        * rendering/RenderBlock.cpp:
+        (WebCore::RenderBlock::finishDelayUpdateScrollInfo):
+
 2009-12-08  Steve Falkenburg  <sfalken at apple.com>
 
         Reviewed by Adam Roben.
diff --git a/WebCore/rendering/RenderBlock.cpp b/WebCore/rendering/RenderBlock.cpp
index 8d2e3d1..3faac5c 100644
--- a/WebCore/rendering/RenderBlock.cpp
+++ b/WebCore/rendering/RenderBlock.cpp
@@ -617,15 +617,15 @@ void RenderBlock::finishDelayUpdateScrollInfo()
     if (gDelayUpdateScrollInfo == 0) {
         ASSERT(gDelayedUpdateScrollInfoSet);
 
-        for (DelayedUpdateScrollInfoSet::iterator it = gDelayedUpdateScrollInfoSet->begin(); it != gDelayedUpdateScrollInfoSet->end(); ++it) {
+        OwnPtr<DelayedUpdateScrollInfoSet> infoSet(gDelayedUpdateScrollInfoSet);
+        gDelayedUpdateScrollInfoSet = 0;
+
+        for (DelayedUpdateScrollInfoSet::iterator it = infoSet->begin(); it != infoSet->end(); ++it) {
             RenderBlock* block = *it;
             if (block->hasOverflowClip()) {
                 block->layer()->updateScrollInfoAfterLayout();
             }
         }
-
-        delete gDelayedUpdateScrollInfoSet;
-        gDelayedUpdateScrollInfoSet = 0;
     }
 }
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list