[prev in list] [next in list] [prev in thread] [next in thread] 

List:       konq-bugs
Subject:    [Bug 128940] New: Khtml crash when append <tr> to <ul> see
From:       Fredrik Johansson <fredrik () mumme ! se>
Date:       2006-06-10 10:46:59
Message-ID: 20060610124657.128940.fredrik () mumme ! se
[Download RAW message or body]

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=128940         
           Summary: Khtml crash when append <tr> to <ul> see
                    http://ross.typepad.com/blog/2006/05/firefox_the_nok.htm
                    l
           Product: konqueror
           Version: unspecified
          Platform: unspecified
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: crash
          Priority: NOR
         Component: general
        AssignedTo: konq-bugs kde org
        ReportedBy: fredrik mumme se


Version:           3.5.3 (using KDE 3.5.3, Kubuntu Package 4:3.5.3-0ubuntu0.1 dapper)
Compiler:          Target: x86_64-linux-gnu
OS:                Linux (x86_64) release 2.6.15-23-amd64-generic

Khtml 3.5.3 and svn rev549876 crashes \
http://ross.typepad.com/blog/2006/05/firefox_the_nok.html

minimum testcase:
<ul>
<li ></li>
<tr></tr>

The problem seems to be an endless recursion append a tr to a ul is invalid, khtml \
creates a <li> and tries this is invalid and <li> is popped of and then a new append \
<li> is tested and so on.

I tried ta make a patch, but it is probably not the correct way to do it.

Index: htmlparser.cpp
===================================================================
--- htmlparser.cpp    (revision 549876) 
+++ htmlparser.cpp    (working copy) 
 @ -388,11 +388,15  @
         case ID_TR:
         case ID_TH:
         case ID_TD:
-            if (inStrayTableContent && !isTableRelatedTag(current->id())) { 
-                // pop out to the nearest enclosing table-related tag. 
-                while (blockStack && !isTableRelatedTag(current->id())) 
-                    popOneBlock(); 
-                return insertNode(n); 
+            if (!isTableRelatedTag(current->id())) { 
+                if (inStrayTableContent) { 
+                    // pop out to the nearest enclosing table-related tag. 
+                    while (blockStack && !isTableRelatedTag(current->id())) 
+                        popOneBlock(); 
+                    return insertNode(n); 
+                } else { 
+                    popOneBlock();  
+                } 
             }
             break;
         case ID_COMMENT:


Regards 
Fredrik Johansson
_______________________________________________
Konq-bugs mailing list
Konq-bugs@mail.kde.org
https://mail.kde.org/mailman/listinfo/konq-bugs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic