[iOS] Some MathML tests crash in RenderMathMLOperator::advanceForGlyph() or boundsFor...
authormmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 28 Feb 2015 00:02:53 +0000 (00:02 +0000)
committermmaxfield@apple.com <mmaxfield@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 28 Feb 2015 00:02:53 +0000 (00:02 +0000)
https://bugs.webkit.org/show_bug.cgi?id=141371

Reviewed by David Kilzer.

Source/WebCore:

Null checks.

Covered by existing mathml tests.

* rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::boundsForGlyph):
(WebCore::RenderMathMLOperator::advanceForGlyph):
(WebCore::RenderMathMLOperator::getDisplayStyleLargeOperator):

LayoutTests:

Updating expected results and TestExpectations

* platform/ios-simulator-wk2/TestExpectations:
* platform/ios-simulator/mathml/opentype/horizontal-munderover-expected.txt:
* platform/ios-simulator/mathml/opentype/large-operators-expected.txt:
* platform/ios-simulator/mathml/opentype/vertical-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@180792 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/platform/ios-simulator-wk2/TestExpectations
LayoutTests/platform/ios-simulator/mathml/opentype/horizontal-munderover-expected.txt
LayoutTests/platform/ios-simulator/mathml/opentype/large-operators-expected.txt
LayoutTests/platform/ios-simulator/mathml/opentype/vertical-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/rendering/mathml/RenderMathMLOperator.cpp

index 18c2c0c..5c51d40 100644 (file)
@@ -1,3 +1,17 @@
+2015-02-27  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [iOS] Some MathML tests crash in RenderMathMLOperator::advanceForGlyph() or boundsForGlyph()
+        https://bugs.webkit.org/show_bug.cgi?id=141371
+
+        Reviewed by David Kilzer.
+
+        Updating expected results and TestExpectations
+
+        * platform/ios-simulator-wk2/TestExpectations:
+        * platform/ios-simulator/mathml/opentype/horizontal-munderover-expected.txt:
+        * platform/ios-simulator/mathml/opentype/large-operators-expected.txt:
+        * platform/ios-simulator/mathml/opentype/vertical-expected.txt:
+
 2015-02-27  Chris Dumez  <cdumez@apple.com>
 
         Make SourceBuffer ActiveDOMObject suspendable
index 7073d86..47e6298 100644 (file)
@@ -260,15 +260,6 @@ mathml/presentation/tokenElements-background-color.html [ ImageOnlyFailure ]
 # MathML tests that fail:
 mathml/presentation/mo-stretch.html [ Failure ]
 
-# <rdar://problem/19760282&19760299> Some MathML tests crash in RenderMathMLOperator::advanceForGlyph() or boundsForGlyph()
-webkit.org/b/141371 mathml/opentype/horizontal.html [ Crash ]
-webkit.org/b/141371 mathml/opentype/horizontal-munderover.html [ Crash Timeout ]
-webkit.org/b/141371 mathml/opentype/large-operators.html [ Crash Failure ]
-webkit.org/b/141371 mathml/opentype/munderover-layout-resize.html [ Crash ]
-webkit.org/b/141371 mathml/opentype/munderover-layout-resize-expected.html [ Crash ]
-webkit.org/b/141371 mathml/presentation/mo-invisible.html [ Crash ]
-webkit.org/b/141371 mathml/opentype/vertical.html [ Crash Failure ]
-
 # SVG tests that time out:
 svg/animations/animVal-basics.html
 svg/animations/animate-calcMode-spline-by.html
index ae3d32a..8965195 100644 (file)
 layer at (0,0) size 800x600
   RenderView at (0,0) size 800x600
-layer at (0,0) size 800x65
-  RenderBlock {HTML} at (0,0) size 800x65
-    RenderBody {BODY} at (8,16) size 784x33
-      RenderBlock {P} at (0,0) size 784x33
-        RenderMathMLMath {math} at (0,8) size 50x15 [padding: 0 1 0 1]
-          RenderMathMLRow {mstyle} at (1,0) size 48x15
-            RenderMathMLUnderOver {mover} at (0,0) size 48x15
-              RenderMathMLOperator {mo} at (0,2) size 48x13
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x13
-                  RenderBlock (anonymous) at (0,0) size 16x13
-                    RenderText at (0,0) size 16x17
-                      text run at (0,0) width 16: "\x{23DE}"
+layer at (0,0) size 800x52
+  RenderBlock {HTML} at (0,0) size 800x52
+    RenderBody {BODY} at (8,16) size 784x20
+      RenderBlock {P} at (0,0) size 784x20
+        RenderMathMLMath {math} at (0,13) size 50x3 [padding: 0 1 0 1]
+          RenderMathMLRow {mstyle} at (1,0) size 48x3
+            RenderMathMLUnderOver {mover} at (0,0) size 48x3
+              RenderMathMLOperator {mo} at (0,2) size 48x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-12) size 0x17
+                      text run at (0,-12) width 0: "\x{23DE}"
               RenderMathMLSpace {mspace} at (0,0) size 48x2 [bgcolor=#FF0000]
-        RenderText {#text} at (50,7) size 4x19
-          text run at (50,7) width 4: " "
-        RenderMathMLMath {math} at (54,10) size 66x12 [padding: 0 1 0 1]
-          RenderMathMLRow {mstyle} at (1,0) size 64x12
-            RenderMathMLUnderOver {mover} at (0,0) size 64x12
-              RenderMathMLSpace {mspace} at (0,10) size 64x2 [bgcolor=#FF0000]
-              RenderMathMLOperator {mo} at (0,0) size 64x10
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 64x10
-                  RenderBlock (anonymous) at (0,0) size 12x10
-                    RenderText at (0,0) size 12x13
-                      text run at (0,0) width 12: "\x{23DE}"
-        RenderText {#text} at (120,7) size 4x19
-          text run at (120,7) width 4: " "
-        RenderMathMLMath {math} at (124,10) size 50x15 [padding: 0 1 0 1]
-          RenderMathMLRow {mstyle} at (1,0) size 48x15
-            RenderMathMLUnderOver {munder} at (0,0) size 48x15
-              RenderMathMLOperator {mo} at (0,0) size 48x13
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x13
-                  RenderBlock (anonymous) at (0,0) size 16x13
-                    RenderText at (0,0) size 16x17
-                      text run at (0,0) width 16: "\x{23DE}"
-              RenderMathMLSpace {mspace} at (0,13) size 48x2 [bgcolor=#FF0000]
-        RenderText {#text} at (174,7) size 4x19
-          text run at (174,7) width 4: " "
-        RenderMathMLMath {math} at (178,10) size 66x22 [padding: 0 1 0 1]
-          RenderMathMLRow {mstyle} at (1,0) size 64x22
-            RenderMathMLUnderOver {munderover} at (0,0) size 64x22
-              RenderMathMLSpace {mspace} at (0,10) size 64x2 [bgcolor=#FF0000]
-              RenderMathMLOperator {mo} at (0,12) size 64x10
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 64x10
-                  RenderBlock (anonymous) at (0,0) size 12x10
-                    RenderText at (0,0) size 12x13
-                      text run at (0,0) width 12: "\x{23DE}"
-              RenderMathMLOperator {mo} at (0,0) size 64x10
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 64x10
-                  RenderBlock (anonymous) at (0,0) size 12x10
-                    RenderText at (0,0) size 12x13
-                      text run at (0,0) width 12: "\x{23DE}"
-        RenderText {#text} at (244,7) size 4x19
-          text run at (244,7) width 4: " "
-        RenderMathMLMath {math} at (248,0) size 50x25 [padding: 0 1 0 1]
-          RenderMathMLRow {mstyle} at (1,0) size 48x25
-            RenderMathMLUnderOver {munderover} at (0,0) size 48x25
-              RenderMathMLOperator {mo} at (0,10) size 48x13
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x13
-                  RenderBlock (anonymous) at (0,0) size 16x13
-                    RenderText at (0,0) size 16x17
-                      text run at (0,0) width 16: "\x{23DE}"
-              RenderMathMLSpace {mspace} at (0,23) size 48x2 [bgcolor=#FF0000]
-              RenderMathMLOperator {mo} at (0,0) size 48x10
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x10
-                  RenderBlock (anonymous) at (0,0) size 12x10
-                    RenderText at (0,0) size 12x13
-                      text run at (0,0) width 12: "\x{23DE}"
-        RenderText {#text} at (298,7) size 4x19
-          text run at (298,7) width 4: " "
-        RenderMathMLMath {math} at (302,8) size 50x25 [padding: 0 1 0 1]
-          RenderMathMLRow {mstyle} at (1,0) size 48x25
-            RenderMathMLUnderOver {munderover} at (0,0) size 48x25
-              RenderMathMLOperator {mo} at (0,2) size 48x13
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x13
-                  RenderBlock (anonymous) at (0,0) size 16x13
-                    RenderText at (0,0) size 16x17
-                      text run at (0,0) width 16: "\x{23DE}"
-              RenderMathMLOperator {mo} at (0,15) size 48x10
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x10
-                  RenderBlock (anonymous) at (0,0) size 12x10
-                    RenderText at (0,0) size 12x13
-                      text run at (0,0) width 12: "\x{23DE}"
+        RenderText {#text} at (50,0) size 4x19
+          text run at (50,0) width 4: " "
+        RenderMathMLMath {math} at (54,12) size 66x3 [padding: 0 1 0 1]
+          RenderMathMLRow {mstyle} at (1,0) size 64x3
+            RenderMathMLUnderOver {mover} at (0,0) size 64x3
+              RenderMathMLSpace {mspace} at (0,1) size 64x2 [bgcolor=#FF0000]
+              RenderMathMLOperator {mo} at (0,0) size 64x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 64x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-9) size 0x13
+                      text run at (0,-9) width 0: "\x{23DE}"
+        RenderText {#text} at (120,0) size 4x19
+          text run at (120,0) width 4: " "
+        RenderMathMLMath {math} at (124,15) size 50x3 [padding: 0 1 0 1]
+          RenderMathMLRow {mstyle} at (1,0) size 48x3
+            RenderMathMLUnderOver {munder} at (0,0) size 48x3
+              RenderMathMLOperator {mo} at (0,0) size 48x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-12) size 0x17
+                      text run at (0,-12) width 0: "\x{23DE}"
+              RenderMathMLSpace {mspace} at (0,1) size 48x2 [bgcolor=#FF0000]
+        RenderText {#text} at (174,0) size 4x19
+          text run at (174,0) width 4: " "
+        RenderMathMLMath {math} at (178,12) size 66x4 [padding: 0 1 0 1]
+          RenderMathMLRow {mstyle} at (1,0) size 64x4
+            RenderMathMLUnderOver {munderover} at (0,0) size 64x4
+              RenderMathMLSpace {mspace} at (0,1) size 64x2 [bgcolor=#FF0000]
+              RenderMathMLOperator {mo} at (0,3) size 64x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 64x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-9) size 0x13
+                      text run at (0,-9) width 0: "\x{23DE}"
+              RenderMathMLOperator {mo} at (0,0) size 64x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 64x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-9) size 0x13
+                      text run at (0,-9) width 0: "\x{23DE}"
+        RenderText {#text} at (244,0) size 4x19
+          text run at (244,0) width 4: " "
+        RenderMathMLMath {math} at (248,14) size 50x4 [padding: 0 1 0 1]
+          RenderMathMLRow {mstyle} at (1,0) size 48x4
+            RenderMathMLUnderOver {munderover} at (0,0) size 48x4
+              RenderMathMLOperator {mo} at (0,1) size 48x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-12) size 0x17
+                      text run at (0,-12) width 0: "\x{23DE}"
+              RenderMathMLSpace {mspace} at (0,2) size 48x2 [bgcolor=#FF0000]
+              RenderMathMLOperator {mo} at (0,0) size 48x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-9) size 0x13
+                      text run at (0,-9) width 0: "\x{23DE}"
+        RenderText {#text} at (298,0) size 4x19
+          text run at (298,0) width 4: " "
+        RenderMathMLMath {math} at (302,13) size 50x4 [padding: 0 1 0 1]
+          RenderMathMLRow {mstyle} at (1,0) size 48x4
+            RenderMathMLUnderOver {munderover} at (0,0) size 48x4
+              RenderMathMLOperator {mo} at (0,2) size 48x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-12) size 0x17
+                      text run at (0,-12) width 0: "\x{23DE}"
+              RenderMathMLOperator {mo} at (0,3) size 48x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-9) size 0x13
+                      text run at (0,-9) width 0: "\x{23DE}"
               RenderMathMLSpace {mspace} at (0,0) size 48x2 [bgcolor=#FF0000]
-        RenderText {#text} at (352,7) size 4x19
-          text run at (352,7) width 4: " "
-        RenderMathMLMath {math} at (356,8) size 50x25 [padding: 0 1 0 1]
-          RenderMathMLRow {mstyle} at (1,0) size 48x25
-            RenderMathMLUnderOver {munder} at (0,0) size 48x25
-              RenderMathMLUnderOver {mover} at (0,0) size 48x15
-                RenderMathMLOperator {mo} at (0,2) size 48x13
-                  RenderMathMLBlock (anonymous, flex) at (0,0) size 48x13
-                    RenderBlock (anonymous) at (0,0) size 16x13
-                      RenderText at (0,0) size 16x17
-                        text run at (0,0) width 16: "\x{23DE}"
+        RenderText {#text} at (352,0) size 4x19
+          text run at (352,0) width 4: " "
+        RenderMathMLMath {math} at (356,13) size 50x4 [padding: 0 1 0 1]
+          RenderMathMLRow {mstyle} at (1,0) size 48x4
+            RenderMathMLUnderOver {munder} at (0,0) size 48x4
+              RenderMathMLUnderOver {mover} at (0,0) size 48x3
+                RenderMathMLOperator {mo} at (0,2) size 48x1
+                  RenderMathMLBlock (anonymous, flex) at (0,0) size 48x1
+                    RenderBlock (anonymous) at (0,0) size 0x1
+                      RenderText at (0,-12) size 0x17
+                        text run at (0,-12) width 0: "\x{23DE}"
                 RenderMathMLSpace {mspace} at (0,0) size 48x2 [bgcolor=#FF0000]
-              RenderMathMLOperator {mo} at (0,15) size 48x10
-                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x10
-                  RenderBlock (anonymous) at (0,0) size 12x10
-                    RenderText at (0,0) size 12x13
-                      text run at (0,0) width 12: "\x{23DE}"
+              RenderMathMLOperator {mo} at (0,3) size 48x1
+                RenderMathMLBlock (anonymous, flex) at (0,0) size 48x1
+                  RenderBlock (anonymous) at (0,0) size 0x1
+                    RenderText at (0,-9) size 0x13
+                      text run at (0,-9) width 0: "\x{23DE}"
         RenderText {#text} at (0,0) size 0x0
index e3ddab0..1d6bd5a 100644 (file)
@@ -4,82 +4,82 @@ layer at (0,0) size 800x41
   RenderBlock {HTML} at (0,0) size 800x41
     RenderBody {BODY} at (8,8) size 784x17
       RenderMathMLMath {math} at (0,0) size 784x17 [padding: 0 1 0 1]
-        RenderMathMLOperator {mo} at (275,1) size 15x16
+        RenderMathMLOperator {mo} at (294,1) size 15x16
           RenderMathMLBlock (anonymous, flex) at (0,0) size 13x16
             RenderBlock (anonymous) at (0,0) size 12x16
               RenderText at (0,0) size 12x17
                 text run at (0,0) width 12: "\x{2211}"
-        RenderMathMLOperator {mo} at (289,0) size 7x16
+        RenderMathMLOperator {mo} at (308,0) size 7x16
           RenderMathMLBlock (anonymous, flex) at (0,0) size 5x16
             RenderBlock (anonymous) at (0,0) size 5x16
               RenderText at (0,1) size 5x17
                 text run at (0,1) width 5: "\x{222B}"
-        RenderMathMLOperator {mo} at (295,2) size 12x15
+        RenderMathMLOperator {mo} at (314,2) size 12x15
           RenderMathMLBlock (anonymous, flex) at (0,0) size 11x15
             RenderBlock (anonymous) at (0,0) size 11x15
               RenderText at (0,-1) size 11x17
                 text run at (0,-1) width 11: "\x{222C}"
-        RenderMathMLOperator {mo} at (306,2) size 15x15
+        RenderMathMLOperator {mo} at (325,2) size 16x15
           RenderMathMLBlock (anonymous, flex) at (0,0) size 14x15
             RenderBlock (anonymous) at (0,0) size 14x15
               RenderText at (0,-1) size 14x17
                 text run at (0,-1) width 14: "\x{222D}"
-        RenderMathMLOperator {mo} at (320,1) size 18x13
-          RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-            RenderBlock (anonymous) at (0,0) size 16x13
-              RenderText at (0,0) size 16x17
-                text run at (0,0) width 16: "\x{2A0C}"
-        RenderMathMLOperator {mo} at (337,1) size 20x13
-          RenderMathMLBlock (anonymous, flex) at (0,0) size 17x13
-            RenderBlock (anonymous) at (0,0) size 16x13
-              RenderText at (0,0) size 16x17
-                text run at (0,0) width 16: "\x{2A01}"
-        RenderMathMLOperator {mo} at (356,2) size 8x15
-          RenderMathMLBlock (anonymous, flex) at (0,0) size 7x15
-            RenderBlock (anonymous) at (0,0) size 7x15
-              RenderText at (0,-1) size 7x17
-                text run at (0,-1) width 7: "\x{222E}"
-        RenderMathMLOperator {mo} at (363,0) size 14x17
+        RenderMathMLOperator {mo} at (340,13) size 1x1
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+            RenderBlock (anonymous) at (0,0) size 0x1
+              RenderText at (0,-12) size 0x17
+                text run at (0,-12) width 0: "\x{2A0C}"
+        RenderMathMLOperator {mo} at (340,13) size 4x1
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+            RenderBlock (anonymous) at (0,0) size 0x1
+              RenderText at (0,-12) size 0x17
+                text run at (0,-12) width 0: "\x{2A01}"
+        RenderMathMLOperator {mo} at (343,0) size 18x15
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 16x15
+            RenderBlock (anonymous) at (0,0) size 16x15
+              RenderText at (0,1) size 16x17
+                text run at (0,1) width 16: "\x{222E}"
+        RenderMathMLOperator {mo} at (360,0) size 14x17
           RenderMathMLBlock (anonymous, flex) at (0,0) size 13x17
             RenderBlock (anonymous) at (0,0) size 13x17
               RenderText at (0,1) size 13x17
                 text run at (0,1) width 13: "\x{222F}"
-        RenderMathMLOperator {mo} at (377,0) size 18x17
+        RenderMathMLOperator {mo} at (373,0) size 19x17
           RenderMathMLBlock (anonymous, flex) at (0,0) size 17x17
             RenderBlock (anonymous) at (0,0) size 17x17
               RenderText at (0,1) size 17x17
                 text run at (0,1) width 17: "\x{2230}"
-        RenderMathMLOperator {mo} at (394,1) size 17x16
+        RenderMathMLOperator {mo} at (391,1) size 17x16
           RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
             RenderBlock (anonymous) at (0,0) size 14x16
               RenderText at (0,0) size 14x17
                 text run at (0,0) width 14: "\x{22C3}"
-        RenderMathMLOperator {mo} at (410,1) size 17x16
+        RenderMathMLOperator {mo} at (407,1) size 17x16
           RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
             RenderBlock (anonymous) at (0,0) size 14x16
               RenderText at (0,0) size 14x17
                 text run at (0,0) width 14: "\x{22C0}"
-        RenderMathMLOperator {mo} at (426,1) size 17x16
+        RenderMathMLOperator {mo} at (423,1) size 17x16
           RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
             RenderBlock (anonymous) at (0,0) size 14x16
               RenderText at (0,0) size 14x17
                 text run at (0,0) width 14: "\x{22C1}"
-        RenderMathMLOperator {mo} at (442,1) size 16x16
+        RenderMathMLOperator {mo} at (439,1) size 16x16
           RenderMathMLBlock (anonymous, flex) at (0,0) size 14x16
             RenderBlock (anonymous) at (0,0) size 14x16
               RenderText at (0,0) size 14x17
                 text run at (0,0) width 14: "\x{22C2}"
-        RenderMathMLOperator {mo} at (457,1) size 20x13
-          RenderMathMLBlock (anonymous, flex) at (0,0) size 17x13
-            RenderBlock (anonymous) at (0,0) size 16x13
-              RenderText at (0,0) size 16x17
-                text run at (0,0) width 16: "\x{2A02}"
-        RenderMathMLOperator {mo} at (476,1) size 17x16
+        RenderMathMLOperator {mo} at (454,13) size 4x1
+          RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+            RenderBlock (anonymous) at (0,0) size 0x1
+              RenderText at (0,-12) size 0x17
+                text run at (0,-12) width 0: "\x{2A02}"
+        RenderMathMLOperator {mo} at (457,1) size 17x16
           RenderMathMLBlock (anonymous, flex) at (0,0) size 15x16
             RenderBlock (anonymous) at (0,0) size 14x16
               RenderText at (0,0) size 14x17
                 text run at (0,0) width 14: "\x{220F}"
-        RenderMathMLOperator {mo} at (492,1) size 17x15
+        RenderMathMLOperator {mo} at (473,1) size 17x15
           RenderMathMLBlock (anonymous, flex) at (0,0) size 15x15
             RenderBlock (anonymous) at (0,0) size 14x15
               RenderText at (0,0) size 14x17
index 1bd194e..1314d55 100644 (file)
@@ -4,86 +4,86 @@ layer at (0,0) size 800x353
   RenderBlock {HTML} at (0,0) size 800x353
     RenderBody {BODY} at (8,16) size 784x321
       RenderBlock {P} at (0,0) size 784x20
-        RenderMathMLMath {math} at (0,2) size 139x18 [padding: 0 1 0 1]
-          RenderMathMLOperator {mo} at (1,1) size 7x16
+        RenderMathMLMath {math} at (0,1) size 114x19 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (1,2) size 7x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
               RenderBlock (anonymous) at (0,0) size 6x16
                 RenderText at (0,0) size 6x17
                   text run at (0,0) width 6: "["
-          RenderMathMLOperator {mo} at (7,1) size 7x16
+          RenderMathMLOperator {mo} at (7,2) size 7x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
               RenderBlock (anonymous) at (0,0) size 6x16
                 RenderText at (0,0) size 6x17
                   text run at (0,0) width 6: "]"
-          RenderMathMLOperator {mo} at (13,0) size 9x17
+          RenderMathMLOperator {mo} at (13,1) size 9x17
             RenderMathMLBlock (anonymous, flex) at (0,0) size 8x17
               RenderBlock (anonymous) at (0,0) size 8x17
                 RenderText at (0,1) size 8x17
                   text run at (0,1) width 8: "{"
-          RenderMathMLOperator {mo} at (21,0) size 9x17
+          RenderMathMLOperator {mo} at (21,1) size 9x17
             RenderMathMLBlock (anonymous, flex) at (0,0) size 8x17
               RenderBlock (anonymous) at (0,0) size 8x17
                 RenderText at (0,1) size 8x17
                   text run at (0,1) width 8: "}"
-          RenderMathMLOperator {mo} at (29,1) size 7x16
+          RenderMathMLOperator {mo} at (29,2) size 7x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
               RenderBlock (anonymous) at (0,0) size 6x16
                 RenderText at (0,0) size 6x17
                   text run at (0,0) width 6: "("
-          RenderMathMLOperator {mo} at (35,1) size 7x16
+          RenderMathMLOperator {mo} at (35,2) size 7x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
               RenderBlock (anonymous) at (0,0) size 6x16
                 RenderText at (0,0) size 6x17
                   text run at (0,0) width 6: ")"
-          RenderMathMLOperator {mo} at (41,0) size 8x18
+          RenderMathMLOperator {mo} at (41,1) size 8x18
             RenderMathMLBlock (anonymous, flex) at (1,0) size 4x18
               RenderBlock (anonymous) at (0,0) size 4x18
                 RenderText at (0,1) size 4x17
                   text run at (0,1) width 4: "|"
-          RenderMathMLOperator {mo} at (48,0) size 7x16
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2308}"
-          RenderMathMLOperator {mo} at (54,0) size 7x16
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2309}"
-          RenderMathMLOperator {mo} at (60,0) size 7x16
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230A}"
-          RenderMathMLOperator {mo} at (66,0) size 8x16
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230B}"
-          RenderMathMLOperator {mo} at (73,1) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E6}"
-          RenderMathMLOperator {mo} at (89,1) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E7}"
-          RenderMathMLOperator {mo} at (105,1) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E8}"
-          RenderMathMLOperator {mo} at (121,1) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E9}"
-          RenderMathMLSpace {mspace} at (137,5) size 0x8
+          RenderMathMLOperator {mo} at (48,7) size 12x10
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2308}"
+          RenderMathMLOperator {mo} at (59,7) size 12x10
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2309}"
+          RenderMathMLOperator {mo} at (70,0) size 13x15
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230A}"
+          RenderMathMLOperator {mo} at (82,0) size 12x15
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230B}"
+          RenderMathMLOperator {mo} at (93,14) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E6}"
+          RenderMathMLOperator {mo} at (93,14) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E7}"
+          RenderMathMLOperator {mo} at (93,1) size 11x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E8}"
+          RenderMathMLOperator {mo} at (103,1) size 10x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (112,6) size 0x8
         RenderText {#text} at (0,0) size 0x0
       RenderBlock {P} at (0,36) size 784x21
-        RenderMathMLMath {math} at (0,0) size 139x21 [padding: 0 1 0 1]
+        RenderMathMLMath {math} at (0,0) size 114x21 [padding: 0 1 0 1]
           RenderMathMLOperator {mo} at (1,4) size 7x16
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
               RenderBlock (anonymous) at (0,0) size 6x16
@@ -119,50 +119,50 @@ layer at (0,0) size 800x353
               RenderBlock (anonymous) at (0,0) size 4x18
                 RenderText at (0,1) size 4x17
                   text run at (0,1) width 4: "|"
-          RenderMathMLOperator {mo} at (48,3) size 7x16
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2308}"
-          RenderMathMLOperator {mo} at (54,3) size 7x16
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2309}"
-          RenderMathMLOperator {mo} at (60,3) size 7x16
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230A}"
-          RenderMathMLOperator {mo} at (66,3) size 8x16
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230B}"
-          RenderMathMLOperator {mo} at (73,4) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E6}"
-          RenderMathMLOperator {mo} at (89,4) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E7}"
-          RenderMathMLOperator {mo} at (105,4) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E8}"
-          RenderMathMLOperator {mo} at (121,4) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E9}"
-          RenderMathMLSpace {mspace} at (137,0) size 0x16
-        RenderText {#text} at (138,1) size 5x19
-          text run at (138,1) width 5: " "
-        RenderMathMLMath {math} at (142,0) size 249x20 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (48,9) size 12x10
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2308}"
+          RenderMathMLOperator {mo} at (59,9) size 12x10
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2309}"
+          RenderMathMLOperator {mo} at (70,2) size 13x15
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230A}"
+          RenderMathMLOperator {mo} at (82,2) size 12x15
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230B}"
+          RenderMathMLOperator {mo} at (93,16) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E6}"
+          RenderMathMLOperator {mo} at (93,16) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E7}"
+          RenderMathMLOperator {mo} at (93,3) size 11x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E8}"
+          RenderMathMLOperator {mo} at (103,3) size 10x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (112,0) size 0x16
+        RenderText {#text} at (113,1) size 5x19
+          text run at (113,1) width 5: " "
+        RenderMathMLMath {math} at (117,0) size 250x20 [padding: 0 1 0 1]
           RenderMathMLOperator {mo} at (1,4) size 19x15
             RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
               RenderBlock (anonymous) at (0,0) size 10x15
@@ -226,7 +226,7 @@ layer at (0,0) size 800x353
           RenderMathMLSpace {mspace} at (247,0) size 0x16
         RenderText {#text} at (0,0) size 0x0
       RenderBlock {P} at (0,73) size 784x40
-        RenderMathMLMath {math} at (0,0) size 139x41 [padding: 0 1 0 1]
+        RenderMathMLMath {math} at (0,0) size 114x41 [padding: 0 1 0 1]
           RenderMathMLOperator {mo} at (1,0) size 7x41
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
               RenderBlock (anonymous) at (0,0) size 6x16
@@ -262,50 +262,50 @@ layer at (0,0) size 800x353
               RenderBlock (anonymous) at (0,0) size 4x18
                 RenderText at (0,1) size 4x17
                   text run at (0,1) width 4: "|"
-          RenderMathMLOperator {mo} at (48,0) size 7x41
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2308}"
-          RenderMathMLOperator {mo} at (54,0) size 7x41
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2309}"
-          RenderMathMLOperator {mo} at (60,0) size 7x41
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230A}"
-          RenderMathMLOperator {mo} at (66,0) size 8x41
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230B}"
-          RenderMathMLOperator {mo} at (73,12) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E6}"
-          RenderMathMLOperator {mo} at (89,12) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E7}"
-          RenderMathMLOperator {mo} at (105,12) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E8}"
-          RenderMathMLOperator {mo} at (121,12) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E9}"
-          RenderMathMLSpace {mspace} at (137,0) size 0x24
+          RenderMathMLOperator {mo} at (48,0) size 12x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2308}"
+          RenderMathMLOperator {mo} at (59,0) size 12x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2309}"
+          RenderMathMLOperator {mo} at (70,0) size 13x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230A}"
+          RenderMathMLOperator {mo} at (82,0) size 12x41
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230B}"
+          RenderMathMLOperator {mo} at (93,24) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E6}"
+          RenderMathMLOperator {mo} at (93,24) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E7}"
+          RenderMathMLOperator {mo} at (93,11) size 11x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E8}"
+          RenderMathMLOperator {mo} at (103,11) size 10x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (112,0) size 0x24
         RenderText {#text} at (0,0) size 0x0
       RenderBlock {P} at (0,129) size 784x56
-        RenderMathMLMath {math} at (0,0) size 139x57 [padding: 0 1 0 1]
+        RenderMathMLMath {math} at (0,0) size 114x57 [padding: 0 1 0 1]
           RenderMathMLOperator {mo} at (1,0) size 7x57
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
               RenderBlock (anonymous) at (0,0) size 6x16
@@ -341,50 +341,50 @@ layer at (0,0) size 800x353
               RenderBlock (anonymous) at (0,0) size 4x18
                 RenderText at (0,1) size 4x17
                   text run at (0,1) width 4: "|"
-          RenderMathMLOperator {mo} at (48,0) size 7x57
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2308}"
-          RenderMathMLOperator {mo} at (54,0) size 7x57
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2309}"
-          RenderMathMLOperator {mo} at (60,0) size 7x57
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230A}"
-          RenderMathMLOperator {mo} at (66,0) size 8x57
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230B}"
-          RenderMathMLOperator {mo} at (73,20) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E6}"
-          RenderMathMLOperator {mo} at (89,20) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E7}"
-          RenderMathMLOperator {mo} at (105,20) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E8}"
-          RenderMathMLOperator {mo} at (121,20) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E9}"
-          RenderMathMLSpace {mspace} at (137,0) size 0x32
-        RenderText {#text} at (138,17) size 5x19
-          text run at (138,17) width 5: " "
-        RenderMathMLMath {math} at (142,0) size 249x36 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (48,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2308}"
+          RenderMathMLOperator {mo} at (59,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2309}"
+          RenderMathMLOperator {mo} at (70,0) size 13x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230A}"
+          RenderMathMLOperator {mo} at (82,0) size 12x57
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230B}"
+          RenderMathMLOperator {mo} at (93,32) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E6}"
+          RenderMathMLOperator {mo} at (93,32) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E7}"
+          RenderMathMLOperator {mo} at (93,19) size 11x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E8}"
+          RenderMathMLOperator {mo} at (103,19) size 10x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (112,0) size 0x32
+        RenderText {#text} at (113,17) size 5x19
+          text run at (113,17) width 5: " "
+        RenderMathMLMath {math} at (117,0) size 250x36 [padding: 0 1 0 1]
           RenderMathMLOperator {mo} at (1,20) size 19x15
             RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
               RenderBlock (anonymous) at (0,0) size 10x15
@@ -448,7 +448,7 @@ layer at (0,0) size 800x353
           RenderMathMLSpace {mspace} at (247,0) size 0x32
         RenderText {#text} at (0,0) size 0x0
       RenderBlock {P} at (0,201) size 784x120
-        RenderMathMLMath {math} at (0,0) size 139x121 [padding: 0 1 0 1]
+        RenderMathMLMath {math} at (0,0) size 114x121 [padding: 0 1 0 1]
           RenderMathMLOperator {mo} at (1,0) size 7x121
             RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
               RenderBlock (anonymous) at (0,0) size 6x16
@@ -484,50 +484,50 @@ layer at (0,0) size 800x353
               RenderBlock (anonymous) at (0,0) size 4x18
                 RenderText at (0,1) size 4x17
                   text run at (0,1) width 4: "|"
-          RenderMathMLOperator {mo} at (48,0) size 7x121
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2308}"
-          RenderMathMLOperator {mo} at (54,0) size 7x121
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{2309}"
-          RenderMathMLOperator {mo} at (60,0) size 7x121
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230A}"
-          RenderMathMLOperator {mo} at (66,0) size 8x121
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 7x16
-              RenderBlock (anonymous) at (0,0) size 7x16
-                RenderText at (0,1) size 7x17
-                  text run at (0,1) width 7: "\x{230B}"
-          RenderMathMLOperator {mo} at (73,52) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E6}"
-          RenderMathMLOperator {mo} at (89,52) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E7}"
-          RenderMathMLOperator {mo} at (105,52) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E8}"
-          RenderMathMLOperator {mo} at (121,52) size 17x13
-            RenderMathMLBlock (anonymous, flex) at (0,0) size 16x13
-              RenderBlock (anonymous) at (0,0) size 16x13
-                RenderText at (0,0) size 16x17
-                  text run at (0,0) width 16: "\x{27E9}"
-          RenderMathMLSpace {mspace} at (137,0) size 0x64
-        RenderText {#text} at (138,49) size 5x19
-          text run at (138,49) width 5: " "
-        RenderMathMLMath {math} at (142,0) size 249x68 [padding: 0 1 0 1]
+          RenderMathMLOperator {mo} at (48,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2308}"
+          RenderMathMLOperator {mo} at (59,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x10
+              RenderBlock (anonymous) at (0,0) size 12x10
+                RenderText at (0,-5) size 12x17
+                  text run at (0,-5) width 12: "\x{2309}"
+          RenderMathMLOperator {mo} at (70,0) size 13x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230A}"
+          RenderMathMLOperator {mo} at (82,0) size 12x121
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 12x15
+              RenderBlock (anonymous) at (0,0) size 12x15
+                RenderText at (0,2) size 12x17
+                  text run at (0,2) width 12: "\x{230B}"
+          RenderMathMLOperator {mo} at (93,64) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E6}"
+          RenderMathMLOperator {mo} at (93,64) size 0x1
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 0x1
+              RenderBlock (anonymous) at (0,0) size 0x1
+                RenderText at (0,-12) size 0x17
+                  text run at (0,-12) width 0: "\x{27E7}"
+          RenderMathMLOperator {mo} at (93,51) size 11x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E8}"
+          RenderMathMLOperator {mo} at (103,51) size 10x16
+            RenderMathMLBlock (anonymous, flex) at (0,0) size 10x16
+              RenderBlock (anonymous) at (0,0) size 10x16
+                RenderText at (0,1) size 10x17
+                  text run at (0,1) width 10: "\x{27E9}"
+          RenderMathMLSpace {mspace} at (112,0) size 0x64
+        RenderText {#text} at (113,49) size 5x19
+          text run at (113,49) width 5: " "
+        RenderMathMLMath {math} at (117,0) size 250x68 [padding: 0 1 0 1]
           RenderMathMLOperator {mo} at (1,52) size 19x15
             RenderMathMLBlock (anonymous, flex) at (4,0) size 11x15
               RenderBlock (anonymous) at (0,0) size 10x15
index d7863bb..edfc2e0 100644 (file)
@@ -1,3 +1,19 @@
+2015-02-27  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        [iOS] Some MathML tests crash in RenderMathMLOperator::advanceForGlyph() or boundsForGlyph()
+        https://bugs.webkit.org/show_bug.cgi?id=141371
+
+        Reviewed by David Kilzer.
+
+        Null checks.
+
+        Covered by existing mathml tests.
+
+        * rendering/mathml/RenderMathMLOperator.cpp:
+        (WebCore::RenderMathMLOperator::boundsForGlyph):
+        (WebCore::RenderMathMLOperator::advanceForGlyph):
+        (WebCore::RenderMathMLOperator::getDisplayStyleLargeOperator):
+
 2015-02-27  Chris Dumez  <cdumez@apple.com>
 
         Make SourceBuffer ActiveDOMObject suspendable
index 8828637..cd3d221 100644 (file)
@@ -1333,7 +1333,7 @@ void RenderMathMLOperator::resetStretchSize()
 
 FloatRect RenderMathMLOperator::boundsForGlyph(const GlyphData& data) const
 {
-    return data.font->boundsForGlyph(data.glyph);
+    return data.font && data.glyph ? data.font->boundsForGlyph(data.glyph) : FloatRect();
 }
 
 float RenderMathMLOperator::heightForGlyph(const GlyphData& data) const
@@ -1343,7 +1343,7 @@ float RenderMathMLOperator::heightForGlyph(const GlyphData& data) const
 
 float RenderMathMLOperator::advanceForGlyph(const GlyphData& data) const
 {
-    return data.font->widthForGlyph(data.glyph);
+    return data.font && data.glyph ? data.font->widthForGlyph(data.glyph) : 0;
 }
 
 void RenderMathMLOperator::computePreferredLogicalWidths()
@@ -1540,7 +1540,7 @@ RenderMathMLOperator::StretchyData RenderMathMLOperator::getDisplayStyleLargeOpe
 
     const auto& primaryFont = style().fontCascade().primaryFont();
     GlyphData baseGlyph = style().fontCascade().glyphDataForCharacter(character, !style().isLeftToRightDirection());
-    if (!primaryFont.mathData() || baseGlyph.font != &primaryFont)
+    if (!primaryFont.mathData() || baseGlyph.font != &primaryFont || !baseGlyph.font || !baseGlyph.glyph)
         return data;
 
     Vector<Glyph> sizeVariants;