Changeset 142607 in webkit


Ignore:
Timestamp:
Feb 12, 2013 5:27:45 AM (11 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r142531.
http://trac.webkit.org/changeset/142531
https://bugs.webkit.org/show_bug.cgi?id=109569

Causes html5lib/run-template layout test to crash. (Requested
by atwilson_ on #webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2013-02-12

Source/WebCore:

  • html/parser/HTMLTreeBuilder.cpp:

(WebCore::HTMLTreeBuilder::processTemplateEndTag):
(WebCore::HTMLTreeBuilder::processColgroupEndTagForInColumnGroup):
(WebCore::HTMLTreeBuilder::processEndOfFile):

  • html/parser/HTMLTreeBuilder.h:

(HTMLTreeBuilder):

LayoutTests:

  • html5lib/resources/template.dat:
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r142606 r142607  
     12013-02-12  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r142531.
     4        http://trac.webkit.org/changeset/142531
     5        https://bugs.webkit.org/show_bug.cgi?id=109569
     6
     7        Causes html5lib/run-template layout test to crash. (Requested
     8        by atwilson_ on #webkit).
     9
     10        * html5lib/resources/template.dat:
     11
    1122013-02-12  Zan Dobersek  <zdobersek@igalia.com>
    213
  • trunk/LayoutTests/html5lib/resources/template.dat

    r142531 r142607  
    984984|             <td>
    985985|               "Foo"
    986 
    987 #data
    988 <template></figcaption><sub><table></table>
    989 #errors
    990 #document
    991 | <html>
    992 |   <head>
    993 |     <template>
    994 |       #document-fragment
    995 |         <sub>
    996 |           <table>
    997 |   <body>
    998 
    999 #data
    1000 <template><template>
    1001 #errors
    1002 #document
    1003 | <html>
    1004 |   <head>
    1005 |     <template>
    1006 |       #document-fragment
    1007 |         <template>
    1008 |           #document-fragment
    1009 |   <body>
    1010 
    1011 #data
    1012 <template><div>
    1013 #errors
    1014 #document
    1015 | <html>
    1016 |   <head>
    1017 |     <template>
    1018 |       #document-fragment
    1019 |         <div>
    1020 |   <body>
    1021 
    1022 #data
    1023 <template><template><div>
    1024 #errors
    1025 #document
    1026 | <html>
    1027 |   <head>
    1028 |     <template>
    1029 |       #document-fragment
    1030 |         <template>
    1031 |           #document-fragment
    1032 |             <div>
    1033 |   <body>
    1034 
    1035 #data
    1036 <template><template><table>
    1037 #errors
    1038 #document
    1039 | <html>
    1040 |   <head>
    1041 |     <template>
    1042 |       #document-fragment
    1043 |         <template>
    1044 |           #document-fragment
    1045 |             <table>
    1046 |   <body>
    1047 
    1048 #data
    1049 <template><template><tbody>
    1050 #errors
    1051 #document
    1052 | <html>
    1053 |   <head>
    1054 |     <template>
    1055 |       #document-fragment
    1056 |         <template>
    1057 |           #document-fragment
    1058 |             <tbody>
    1059 |   <body>
    1060 
    1061 #data
    1062 <template><template><tr>
    1063 #errors
    1064 #document
    1065 | <html>
    1066 |   <head>
    1067 |     <template>
    1068 |       #document-fragment
    1069 |         <template>
    1070 |           #document-fragment
    1071 |             <tr>
    1072 |   <body>
    1073 
    1074 #data
    1075 <template><template><td>
    1076 #errors
    1077 #document
    1078 | <html>
    1079 |   <head>
    1080 |     <template>
    1081 |       #document-fragment
    1082 |         <template>
    1083 |           #document-fragment
    1084 |             <td>
    1085 |   <body>
    1086 
    1087 #data
    1088 <template><template><caption>
    1089 #errors
    1090 #document
    1091 | <html>
    1092 |   <head>
    1093 |     <template>
    1094 |       #document-fragment
    1095 |         <template>
    1096 |           #document-fragment
    1097 |             <caption>
    1098 |   <body>
    1099 
    1100 #data
    1101 <template><template><colgroup>
    1102 #errors
    1103 #document
    1104 | <html>
    1105 |   <head>
    1106 |     <template>
    1107 |       #document-fragment
    1108 |         <template>
    1109 |           #document-fragment
    1110 |             <colgroup>
    1111 |   <body>
    1112 
    1113 #data
    1114 <template><template><col>
    1115 #errors
    1116 #document
    1117 | <html>
    1118 |   <head>
    1119 |     <template>
    1120 |       #document-fragment
    1121 |         <template>
    1122 |           #document-fragment
    1123 |             <col>
    1124 |   <body>
    1125 
    1126 #data
    1127 <template><template><tbody><select>
    1128 #errors
    1129 #document
    1130 | <html>
    1131 |   <head>
    1132 |     <template>
    1133 |       #document-fragment
    1134 |         <template>
    1135 |           #document-fragment
    1136 |             <tbody>
    1137 |             <select>
    1138 |   <body>
    1139 
    1140 #data
    1141 <template><template><table>Foo
    1142 #errors
    1143 #document
    1144 | <html>
    1145 |   <head>
    1146 |     <template>
    1147 |       #document-fragment
    1148 |         <template>
    1149 |           #document-fragment
    1150 |             <table>
    1151 |             "Foo"
    1152 |   <body>
    1153 
    1154 #data
    1155 <template><template><frame>
    1156 #errors
    1157 #document
    1158 | <html>
    1159 |   <head>
    1160 |     <template>
    1161 |       #document-fragment
    1162 |         <template>
    1163 |           #document-fragment
    1164 |             <frame>
    1165 |   <body>
    1166 
    1167 #data
    1168 <template><template><script>var i
    1169 #errors
    1170 #document
    1171 | <html>
    1172 |   <head>
    1173 |     <template>
    1174 |       #document-fragment
    1175 |         <template>
    1176 |           #document-fragment
    1177 |             <script>
    1178 |               "var i"
    1179 |   <body>
    1180 
    1181 #data
    1182 <template><template><style>var i
    1183 #errors
    1184 #document
    1185 | <html>
    1186 |   <head>
    1187 |     <template>
    1188 |       #document-fragment
    1189 |         <template>
    1190 |           #document-fragment
    1191 |             <style>
    1192 |               "var i"
    1193 |   <body>
  • trunk/Source/WebCore/ChangeLog

    r142606 r142607  
     12013-02-12  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r142531.
     4        http://trac.webkit.org/changeset/142531
     5        https://bugs.webkit.org/show_bug.cgi?id=109569
     6
     7        Causes html5lib/run-template layout test to crash. (Requested
     8        by atwilson_ on #webkit).
     9
     10        * html/parser/HTMLTreeBuilder.cpp:
     11        (WebCore::HTMLTreeBuilder::processTemplateEndTag):
     12        (WebCore::HTMLTreeBuilder::processColgroupEndTagForInColumnGroup):
     13        (WebCore::HTMLTreeBuilder::processEndOfFile):
     14        * html/parser/HTMLTreeBuilder.h:
     15        (HTMLTreeBuilder):
     16
    1172013-02-12  Zan Dobersek  <zdobersek@igalia.com>
    218
  • trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp

    r142552 r142607  
    970970    resetInsertionModeAppropriately();
    971971}
    972 
    973 bool HTMLTreeBuilder::popAllTemplatesForEndOfFile()
    974 {
    975     if (m_templateInsertionModes.isEmpty())
    976         return false;
    977 
    978     while (!m_templateInsertionModes.isEmpty()) {
    979         if (m_tree.currentIsRootNode())
    980             return false;
    981         if (m_tree.currentNode()->hasTagName(templateTag))
    982             m_templateInsertionModes.removeLast();
    983         m_tree.openElements()->pop();
    984     }
    985 
    986     resetInsertionModeAppropriately();
    987     return true;
    988 }
    989972#endif
    990973
    991974bool HTMLTreeBuilder::processColgroupEndTagForInColumnGroup()
    992975{
    993     bool ignoreFakeEndTag = m_tree.currentIsRootNode();
    994 #if ENABLE(TEMPLATE_ELEMENT)
    995     ignoreFakeEndTag = ignoreFakeEndTag || m_tree.currentNode()->hasTagName(templateTag);
    996 #endif
    997 
    998     if (ignoreFakeEndTag) {
     976    if (m_tree.currentIsRootNode() || m_tree.currentNode()->hasTagName(templateTag)) {
    999977        ASSERT(isParsingFragmentOrTemplateContents());
    1000978        // FIXME: parse error
     
    25242502{
    25252503    ASSERT(token->type() == HTMLTokenTypes::EndOfFile);
     2504#if ENABLE(TEMPLATE_ELEMENT)
     2505    m_templateInsertionModes.clear();
     2506#endif
    25262507    switch (insertionMode()) {
    25272508    case InitialMode:
     
    25562537#endif
    25572538        notImplemented(); // Emit parse error based on what elements are still open.
    2558 #if ENABLE(TEMPLATE_ELEMENT)
    2559         if (popAllTemplatesForEndOfFile()) {
    2560             processEndOfFile(token);
    2561             return;
    2562         }
    2563 #endif
    25642539        break;
    25652540    case AfterBodyMode:
     
    25762551        ASSERT(insertionMode() == AfterFramesetMode || insertionMode() == AfterAfterFramesetMode);
    25772552        break;
    2578     case InColumnGroupMode:
    2579         if (m_tree.currentIsRootNode()) {
    2580             ASSERT(isParsingFragment());
    2581             return; // FIXME: Should we break here instead of returning?
    2582         }
    2583 #if ENABLE(TEMPLATE_ELEMENT)
    2584         ASSERT(m_tree.currentNode()->hasTagName(colgroupTag));
    2585 #else
    2586         ASSERT(m_tree.currentNode()->hasTagName(colgroupTag) || m_tree.currentNode()->hasTagName(templateTag));
    2587 #endif
    2588         processColgroupEndTagForInColumnGroup();
    2589         // Fall through
    25902553    case InFramesetMode:
    25912554    case InTableMode:
     
    25932556    case InSelectInTableMode:
    25942557    case InSelectMode:
    2595         ASSERT(insertionMode() == InSelectMode || insertionMode() == InSelectInTableMode || insertionMode() == InTableMode || insertionMode() == InFramesetMode || insertionMode() == InTableBodyMode || insertionMode() == InColumnGroupMode);
     2558        ASSERT(insertionMode() == InSelectMode || insertionMode() == InSelectInTableMode || insertionMode() == InTableMode || insertionMode() == InFramesetMode || insertionMode() == InTableBodyMode);
    25962559        if (m_tree.currentNode() != m_tree.openElements()->rootNode())
    25972560            parseError(token);
    2598 
    2599 #if ENABLE(TEMPLATE_ELEMENT)
    2600         if (popAllTemplatesForEndOfFile()) {
    2601             processEndOfFile(token);
    2602             return;
    2603         }
    2604 #endif
    2605         break;
     2561        break;
     2562    case InColumnGroupMode:
     2563        if (m_tree.currentIsRootNode()) {
     2564            ASSERT(isParsingFragment());
     2565            return; // FIXME: Should we break here instead of returning?
     2566        }
     2567        if (!processColgroupEndTagForInColumnGroup()) {
     2568            ASSERT(isParsingFragmentOrTemplateContents());
     2569            return; // FIXME: Should we break here instead of returning?
     2570        }
     2571        processEndOfFile(token);
     2572        return;
    26062573    case InTableTextMode:
    26072574        defaultForInTableText();
     
    26182585        return;
    26192586    case TemplateContentsMode:
    2620 #if ENABLE(TEMPLATE_ELEMENT)
     2587        if (m_tree.currentIsRootNode()) {
     2588            ASSERT(isParsingFragment());
     2589            break;
     2590        }
    26212591        parseError(token);
    2622         if (popAllTemplatesForEndOfFile()) {
    2623             processEndOfFile(token);
    2624             return;
    2625         }
    2626         break;
    2627 #else
    2628         ASSERT_NOT_REACHED();
    2629 #endif
     2592        m_tree.openElements()->pop();
     2593        resetInsertionModeAppropriately();
     2594        processEndOfFile(token);
     2595        return;
    26302596    }
    26312597    ASSERT(m_tree.currentNode());
  • trunk/Source/WebCore/html/parser/HTMLTreeBuilder.h

    r142531 r142607  
    196196    void processTemplateStartTag(AtomicHTMLToken*);
    197197    void processTemplateEndTag(AtomicHTMLToken*);
    198     bool popAllTemplatesForEndOfFile();
    199198#endif
    200199
Note: See TracChangeset for help on using the changeset viewer.