[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-10851-g50815da
commit-queue at webkit.org
commit-queue at webkit.org
Wed Dec 22 18:41:31 UTC 2010
The following commit has been merged in the debian/experimental branch:
commit 702cd3daa0f82bcd14ac6d1d934cc5b03fc6d373
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Dec 15 23:06:43 2010 +0000
2010-12-15 Yong Li <yoli at rim.com>
Reviewed by Darin Adler.
Reproduce stack overflow when there are too many sibling inline boxes.
https://bugs.webkit.org/show_bug.cgi?id=48255
* fast/overflow/lots-of-sibling-inline-boxes.html: Added.
2010-12-15 Yong Li <yoli at rim.com>
Reviewed by Darin Adler.
Fix stack overflow when there are too many sibling inline boxes by using
a loop to traverse children instead of calling each sibling from the first child.
https://bugs.webkit.org/show_bug.cgi?id=48255
Test: fast/overflow/lots-of-sibling-inline-boxes.html
* rendering/InlineBox.h:
(WebCore::InlineBox::setConstructed):
(WebCore::InlineBox::next):
* rendering/InlineFlowBox.h:
(WebCore::InlineFlowBox::setConstructed):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74145 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index ce50601..4f6e003 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,12 @@
+2010-12-15 Yong Li <yoli at rim.com>
+
+ Reviewed by Darin Adler.
+
+ Reproduce stack overflow when there are too many sibling inline boxes.
+ https://bugs.webkit.org/show_bug.cgi?id=48255
+
+ * fast/overflow/lots-of-sibling-inline-boxes.html: Added.
+
2010-12-15 Jian Li <jianli at chromium.org>
Unreviewed. Updated chromium test_expectations to skip a test that
diff --git a/LayoutTests/accessibility/document-attributes-expected.txt b/LayoutTests/fast/overflow/lots-of-sibling-inline-boxes-expected.txt
similarity index 100%
copy from LayoutTests/accessibility/document-attributes-expected.txt
copy to LayoutTests/fast/overflow/lots-of-sibling-inline-boxes-expected.txt
diff --git a/LayoutTests/fast/overflow/lots-of-sibling-inline-boxes.html b/LayoutTests/fast/overflow/lots-of-sibling-inline-boxes.html
new file mode 100644
index 0000000..72aa449
--- /dev/null
+++ b/LayoutTests/fast/overflow/lots-of-sibling-inline-boxes.html
@@ -0,0 +1,11 @@
+<body>
+<script>
+ for (var i = 0; i < 130000; ++i)
+ document.write("<a>1</a>");
+
+ document.body.innerHTML = "<html><body>Passed</body></html>";
+
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+</script>
+</body>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index b645203..c34e123 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,19 @@
+2010-12-15 Yong Li <yoli at rim.com>
+
+ Reviewed by Darin Adler.
+
+ Fix stack overflow when there are too many sibling inline boxes by using
+ a loop to traverse children instead of calling each sibling from the first child.
+ https://bugs.webkit.org/show_bug.cgi?id=48255
+
+ Test: fast/overflow/lots-of-sibling-inline-boxes.html
+
+ * rendering/InlineBox.h:
+ (WebCore::InlineBox::setConstructed):
+ (WebCore::InlineBox::next):
+ * rendering/InlineFlowBox.h:
+ (WebCore::InlineFlowBox::setConstructed):
+
2010-12-15 Sam Weinig <sam at webkit.org>
Reviewed by Anders Carlsson.
diff --git a/WebCore/rendering/InlineBox.h b/WebCore/rendering/InlineBox.h
index e50a24c..5b3f682 100644
--- a/WebCore/rendering/InlineBox.h
+++ b/WebCore/rendering/InlineBox.h
@@ -131,6 +131,8 @@ public:
virtual void paint(PaintInfo&, int tx, int ty);
virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty);
+ InlineBox* next() const { return m_next; }
+
// Overloaded new operator.
void* operator new(size_t, RenderArena*) throw();
@@ -176,12 +178,7 @@ public:
}
bool isConstructed() { return m_constructed; }
- virtual void setConstructed()
- {
- m_constructed = true;
- if (m_next)
- m_next->setConstructed();
- }
+ virtual void setConstructed() { m_constructed = true; }
void setExtracted(bool b = true) { m_extracted = b; }
diff --git a/WebCore/rendering/InlineFlowBox.h b/WebCore/rendering/InlineFlowBox.h
index b92a829..19f9d16 100644
--- a/WebCore/rendering/InlineFlowBox.h
+++ b/WebCore/rendering/InlineFlowBox.h
@@ -76,8 +76,8 @@ public:
virtual void setConstructed()
{
InlineBox::setConstructed();
- if (firstChild())
- firstChild()->setConstructed();
+ for (InlineBox* child = firstChild(); child; child = child->next())
+ child->setConstructed();
}
void addToLine(InlineBox* child);
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list