Title: [138451] trunk
- Revision
- 138451
- Author
- [email protected]
- Date
- 2012-12-24 22:16:43 -0800 (Mon, 24 Dec 2012)
Log Message
::first-letter { overflow: -webkit-paged-y } causes crash
https://bugs.webkit.org/show_bug.cgi?id=105393
Reviewed by Beth Dakin.
Source/WebCore:
Should check whether e is available or not before invoking
e->hasTagName in adjustRenderStyle in StyleResolver.cpp.
Test: fast/css/pseudo-element-opagedxy-crash.html
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyle):
If adjustRenderStyle is invoked in pseudoStyleForElement, the given
element is 0. So e is not available. However if the given style's
overflowY is OPAGEDX or OPAGEDY, adjustRenderStyle doesn't check
whether e is available or not before e->hasTagName.
This causes a crash.
LayoutTests:
* fast/css/pseudo-element-opagedxy-crash-expected.txt: Added.
* fast/css/pseudo-element-opagedxy-crash.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (138450 => 138451)
--- trunk/LayoutTests/ChangeLog 2012-12-25 05:23:19 UTC (rev 138450)
+++ trunk/LayoutTests/ChangeLog 2012-12-25 06:16:43 UTC (rev 138451)
@@ -1,3 +1,13 @@
+2012-12-24 Takashi Sakamoto <[email protected]>
+
+ ::first-letter { overflow: -webkit-paged-y } causes crash
+ https://bugs.webkit.org/show_bug.cgi?id=105393
+
+ Reviewed by Beth Dakin.
+
+ * fast/css/pseudo-element-opagedxy-crash-expected.txt: Added.
+ * fast/css/pseudo-element-opagedxy-crash.html: Added.
+
2012-12-24 Mihnea Ovidenie <[email protected]>
[CSS Regions] Convert some fast/regions pixel tests to reftests
Added: trunk/LayoutTests/fast/css/pseudo-element-opagedxy-crash-expected.txt (0 => 138451)
--- trunk/LayoutTests/fast/css/pseudo-element-opagedxy-crash-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/css/pseudo-element-opagedxy-crash-expected.txt 2012-12-25 06:16:43 UTC (rev 138451)
@@ -0,0 +1,12 @@
+This is a test for ::first-letter { overflow: -webkit-paged-y } causes crash. https://bugs.webkit.org/show_bug.cgi?id=105393
+
+This passes if it does not crash.
+
+PASS: overflow:-webkit-paged-x for ::first-line
+PASS: overflow:-webkit-paged-y for ::first-line
+PASS: overflow:-webkit-paged-x for ::first-letter
+PASS: overflow:-webkit-paged-y for ::first-letter
+PASS: overflow:-webkit-paged-x for ::before
+PASS: overflow:-webkit-paged-y for ::before
+PASS: overflow:-webkit-paged-x for ::after
+PASS: overflow:-webkit-paged-y for ::after
Added: trunk/LayoutTests/fast/css/pseudo-element-opagedxy-crash.html (0 => 138451)
--- trunk/LayoutTests/fast/css/pseudo-element-opagedxy-crash.html (rev 0)
+++ trunk/LayoutTests/fast/css/pseudo-element-opagedxy-crash.html 2012-12-25 06:16:43 UTC (rev 138451)
@@ -0,0 +1,55 @@
+<!doctype html>
+<html>
+<head>
+<style>
+#first-line-pagedx::first-line {
+ overflow: -webkit-paged-x;
+}
+
+#first-line-pagedy::first-line {
+ overflow: -webkit-paged-y;
+}
+
+#first-letter-pagedx::first-letter {
+ overflow: -webkit-paged-x;
+}
+
+#first-letter-pagedy::first-letter {
+ overflow: -webkit-paged-y;
+}
+
+#before-pagedx::before {
+ overflow: -webkit-paged-x;
+}
+
+#before-pagedy::before {
+ overflow: -webkit-paged-y;
+}
+
+#after-pagedx::after {
+ overflow: -webkit-paged-x;
+}
+
+#after-pagedy::after {
+ overflow: -webkit-paged-y;
+}
+</style>
+<script>
+if (window.testRunner)
+ testRunner.dumpAsText();
+</script>
+</head>
+<body>
+ <p>This is a test for ::first-letter { overflow: -webkit-paged-y } causes crash. <a href=""
+ <p>This passes if it does not crash.</p>
+
+ <div id="first-line-pagedx">PASS: overflow:-webkit-paged-x for ::first-line</div>
+ <div id="first-line-pagedy">PASS: overflow:-webkit-paged-y for ::first-line</div>
+ <div id="first-letter-pagedx">PASS: overflow:-webkit-paged-x for ::first-letter</div>
+ <div id="first-letter-pagedy">PASS: overflow:-webkit-paged-y for ::first-letter</div>
+ <div id="before-pagedx">PASS: overflow:-webkit-paged-x for ::before</div>
+ <div id="before-pagedy">PASS: overflow:-webkit-paged-y for ::before</div>
+ <div id="after-pagedx">PASS: overflow:-webkit-paged-x for ::after</div>
+ <div id="after-pagedy">PASS: overflow:-webkit-paged-y for ::after</div>
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (138450 => 138451)
--- trunk/Source/WebCore/ChangeLog 2012-12-25 05:23:19 UTC (rev 138450)
+++ trunk/Source/WebCore/ChangeLog 2012-12-25 06:16:43 UTC (rev 138451)
@@ -1,3 +1,23 @@
+2012-12-24 Takashi Sakamoto <[email protected]>
+
+ ::first-letter { overflow: -webkit-paged-y } causes crash
+ https://bugs.webkit.org/show_bug.cgi?id=105393
+
+ Reviewed by Beth Dakin.
+
+ Should check whether e is available or not before invoking
+ e->hasTagName in adjustRenderStyle in StyleResolver.cpp.
+
+ Test: fast/css/pseudo-element-opagedxy-crash.html
+
+ * css/StyleResolver.cpp:
+ (WebCore::StyleResolver::adjustRenderStyle):
+ If adjustRenderStyle is invoked in pseudoStyleForElement, the given
+ element is 0. So e is not available. However if the given style's
+ overflowY is OPAGEDX or OPAGEDY, adjustRenderStyle doesn't check
+ whether e is available or not before e->hasTagName.
+ This causes a crash.
+
2012-12-24 Alexei Filippov <[email protected]>
Web Inspector: add async API for passing renderer process memory stats
Modified: trunk/Source/WebCore/css/StyleResolver.cpp (138450 => 138451)
--- trunk/Source/WebCore/css/StyleResolver.cpp 2012-12-25 05:23:19 UTC (rev 138450)
+++ trunk/Source/WebCore/css/StyleResolver.cpp 2012-12-25 06:16:43 UTC (rev 138451)
@@ -2049,7 +2049,7 @@
// Call setStylesForPaginationMode() if a pagination mode is set for any non-root elements. If these
// styles are specified on a root element, then they will be incorporated in
// StyleResolver::styleForDocument().
- if ((style->overflowY() == OPAGEDX || style->overflowY() == OPAGEDY) && !(e->hasTagName(htmlTag) || e->hasTagName(bodyTag)))
+ if ((style->overflowY() == OPAGEDX || style->overflowY() == OPAGEDY) && !(e && (e->hasTagName(htmlTag) || e->hasTagName(bodyTag))))
setStylesForPaginationMode(WebCore::paginationModeForRenderStyle(style), style);
// Table rows, sections and the table itself will support overflow:hidden and will ignore scroll/auto.
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes