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

List:       kde-commits
Subject:    branches/KDE/4.1/kdelibs/khtml/html
From:       Harri Porten <porten () kde ! org>
Date:       2008-11-18 0:29:05
Message-ID: 1226968145.128151.23563.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 885848 by porten:

Merged revision 885847:
Don't create child renderers for render objects that don't
allow it. Fixes <select> in <applet> crash from bug #84498
and other cases I found by inspection.

 M  +4 -2      html_formimpl.cpp  
 M  +2 -2      html_inlineimpl.cpp  


--- branches/KDE/4.1/kdelibs/khtml/html/html_formimpl.cpp #885847:885848
@@ -1232,7 +1232,8 @@
 
     RenderStyle* const _style = document()->styleSelector()->styleForElement(this);
     _style->ref();
-    if (parentNode()->renderer() && _style->display() != NONE) {
+    if (parentNode()->renderer() && parentNode()->renderer()->childAllowed() &&
+        _style->display() != NONE) {
         m_render = new (document()->renderArena()) RenderFieldset(this);
         m_render->setStyle(_style);
     }
@@ -2329,7 +2330,8 @@
 
     RenderStyle* const _style = document()->styleSelector()->styleForElement(this);
     _style->ref();
-    if (parentNode()->renderer() && _style->display() != NONE) {
+    if (parentNode()->renderer() && parentNode()->renderer()->childAllowed() &&
+        _style->display() != NONE) {
         m_render = new (document()->renderArena()) RenderSelect(this);
         m_render->setStyle(_style);
     }
--- branches/KDE/4.1/kdelibs/khtml/html/html_inlineimpl.cpp #885847:885848
@@ -224,7 +224,7 @@
     assert(!m_render);
     assert(parentNode());
 
-    if (parentNode()->renderer()) {
+    if (parentNode()->renderer() && parentNode()->renderer()->childAllowed()) {
         RenderStyle* style = document()->styleSelector()->styleForElement( this );
         style->ref();
         if( style->display() != NONE ) {
@@ -250,7 +250,7 @@
     assert(!m_render);
     assert(parentNode());
 
-    if (parentNode()->renderer()) {
+    if (parentNode()->renderer() && parentNode()->renderer()->childAllowed()) {
         RenderStyle* style = document()->styleSelector()->styleForElement( this );
         style->ref();
         if( style->display() != NONE ) {
[prev in list] [next in list] [prev in thread] [next in thread] 

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