aboutsummaryrefslogtreecommitdiff
path: root/www/waterfox/files/patch-bug1405878
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2018-02-05 23:49:18 +0000
committerJan Beich <jbeich@FreeBSD.org>2018-02-05 23:49:18 +0000
commita78e81243d1f0c914f0da656627f08dab9141a0c (patch)
treeed7f11634717d733f1ddb0bd679972c8790e54e5 /www/waterfox/files/patch-bug1405878
parent724999648fb394b7b970b5a3a43427c9672206ba (diff)
downloadports-a78e81243d1f0c914f0da656627f08dab9141a0c.tar.gz
ports-a78e81243d1f0c914f0da656627f08dab9141a0c.zip
MFH: r461026
www/waterfox: apply more FF57 fixes Approved by: ports-secteam blanket
Notes
Notes: svn path=/branches/2018Q1/; revision=461027
Diffstat (limited to 'www/waterfox/files/patch-bug1405878')
-rw-r--r--www/waterfox/files/patch-bug1405878120
1 files changed, 120 insertions, 0 deletions
diff --git a/www/waterfox/files/patch-bug1405878 b/www/waterfox/files/patch-bug1405878
new file mode 100644
index 000000000000..fa3d058e234c
--- /dev/null
+++ b/www/waterfox/files/patch-bug1405878
@@ -0,0 +1,120 @@
+commit 87f3d592d92f
+Author: Boris Zbarsky <bzbarsky@mit.edu>
+Date: Mon Oct 9 14:49:19 2017 -0400
+
+ Bug 1405878 - Make sure to notify for our kids, if needed, before calling DoneAddingChildren in the XML content sink. r=hsivonen, a=sledru
+
+ Once we call DoneAddingChildren, random code of various sorts will run, which
+ can flush our notification state. If that happens before we've notified on our
+ kids, but after we've popped the element we're closing off the element stack,
+ we will fail to ever notify on the kids.
+
+ MozReview-Commit-ID: Ei7v5OobX8R
+
+ --HG--
+ extra : source : f144e1434312485cf9ee16a36d6159dbcb13a07d
+---
+ dom/xml/crashtests/1405878.xml | 11 +++++++++++
+ dom/xml/crashtests/crashtests.list | 1 +
+ dom/xml/nsXMLContentSink.cpp | 18 +++++++++++-------
+ layout/reftests/bugs/1405878-1-ref.xml | 7 +++++++
+ layout/reftests/bugs/1405878-1.xml | 6 ++++++
+ layout/reftests/bugs/reftest.list | 1 +
+ 6 files changed, 37 insertions(+), 7 deletions(-)
+
+diff --git dom/xml/crashtests/1405878.xml dom/xml/crashtests/1405878.xml
+new file mode 100644
+index 000000000000..12677ade938d
+--- /dev/null
++++ dom/xml/crashtests/1405878.xml
+@@ -0,0 +1,11 @@
++<html xmlns="http://www.w3.org/1999/xhtml">
++ <body>
++ <select>
++ <script>document.documentElement.offsetHeight</script>
++ <option>Hello there</option>
++ </select>
++ <script>
++ document.querySelector("body").style.display = "inline";
++ </script>
++ </body>
++</html>
+diff --git dom/xml/crashtests/crashtests.list dom/xml/crashtests/crashtests.list
+index f18767d582c2..2c06ffc545ec 100644
+--- dom/xml/crashtests/crashtests.list
++++ dom/xml/crashtests/crashtests.list
+@@ -10,3 +10,4 @@ load 453278.html
+ load 803586.xhtml
+ load 994740-1.xhtml
+ load 1038887.xhtml
++load 1405878.xml
+diff --git dom/xml/nsXMLContentSink.cpp dom/xml/nsXMLContentSink.cpp
+index 2593519aa44b..b04977d62cf1 100644
+--- dom/xml/nsXMLContentSink.cpp
++++ dom/xml/nsXMLContentSink.cpp
+@@ -1071,6 +1071,17 @@ nsXMLContentSink::HandleEndElement(const char16_t *aName,
+ isTemplateElement, "Wrong element being closed");
+ #endif
+
++ // Make sure to notify on our kids before we call out to any other code that
++ // might reenter us and call FlushTags, in a state in which we've already
++ // popped "content" from the stack but haven't notified on its kids yet.
++ int32_t stackLen = mContentStack.Length();
++ if (mNotifyLevel >= stackLen) {
++ if (numFlushed < content->GetChildCount()) {
++ NotifyAppend(content, numFlushed);
++ }
++ mNotifyLevel = stackLen - 1;
++ }
++
+ result = CloseElement(content);
+
+ if (mCurrentHead == content) {
+@@ -1086,13 +1097,6 @@ nsXMLContentSink::HandleEndElement(const char16_t *aName,
+ MaybeStartLayout(false);
+ }
+
+- int32_t stackLen = mContentStack.Length();
+- if (mNotifyLevel >= stackLen) {
+- if (numFlushed < content->GetChildCount()) {
+- NotifyAppend(content, numFlushed);
+- }
+- mNotifyLevel = stackLen - 1;
+- }
+ DidAddContent();
+
+ if (content->IsSVGElement(nsGkAtoms::svg)) {
+diff --git layout/reftests/bugs/1405878-1-ref.xml layout/reftests/bugs/1405878-1-ref.xml
+new file mode 100644
+index 000000000000..6d1dd199b41e
+--- /dev/null
++++ layout/reftests/bugs/1405878-1-ref.xml
+@@ -0,0 +1,7 @@
++<html xmlns="http://www.w3.org/1999/xhtml">
++ <select>
++ <script>document.documentElement.offsetHeight</script>
++ <option>Hello there</option>
++ <script>document.documentElement.offsetHeight</script>
++ </select>
++</html>
+diff --git layout/reftests/bugs/1405878-1.xml layout/reftests/bugs/1405878-1.xml
+new file mode 100644
+index 000000000000..3915711b1103
+--- /dev/null
++++ layout/reftests/bugs/1405878-1.xml
+@@ -0,0 +1,6 @@
++<html xmlns="http://www.w3.org/1999/xhtml">
++ <select>
++ <script>document.documentElement.offsetHeight</script>
++ <option>Hello there</option>
++ </select>
++</html>
+diff --git layout/reftests/bugs/reftest.list layout/reftests/bugs/reftest.list
+index 52f8cb915cee..47c04cdf41d6 100644
+--- layout/reftests/bugs/reftest.list
++++ layout/reftests/bugs/reftest.list
+@@ -2037,3 +2037,4 @@ needs-focus != 1377447-1.html 1377447-2.html
+ == 1380224-1.html 1380224-1-ref.html
+ == 1384065.html 1384065-ref.html
+ == 1384275-1.html 1384275-1-ref.html
++== 1405878-1.xml 1405878-1-ref.xml