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

List:       kde-commits
Subject:    KDE/kdelibs/khtml/html
From:       Maks Orlovich <maksim () kde ! org>
Date:       2009-09-30 17:07:24
Message-ID: 1254330444.616246.26456.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1029757 by orlovich:

automatically merged revision 1029754:
Don't set m_render before computing style for HTMLFrameSetElementImpl
as that can crash if we need to determine isContentEditable.
Also fixup missing && childAllowed() I noticed while looking at this.

BUG:206038
BUG:202682

 M  +10 -7     html_baseimpl.cpp  


--- trunk/KDE/kdelibs/khtml/html/html_baseimpl.cpp #1029756:1029757
@@ -220,7 +220,8 @@
 
     RenderStyle* style = document()->styleSelector()->styleForElement(this);
     style->ref();
-    if (parentNode()->renderer() && style->display() != NONE) {
+    if (parentNode()->renderer() && parentNode()->renderer()->childAllowed()
+                                 && style->display() != NONE) {
         if (style->display() == BLOCK)
             // only use the quirky class for block display
             m_render = new (document()->renderArena()) RenderBody(this);
@@ -371,7 +372,8 @@
         node = static_cast<HTMLElementImpl*>(node->parentNode());
     }
 
-    if (parentNode()->renderer() && document()->isURLAllowed(url.string()))  {
+    if (parentNode()->renderer() && parentNode()->renderer()->childAllowed()
+                                 && document()->isURLAllowed(url.string()))  {
         RenderStyle* _style = document()->styleSelector()->styleForElement(this);
         _style->ref();
         if ( _style->display() != NONE ) {
@@ -620,10 +622,11 @@
     }
 
     // ignore display: none
-    if ( parentNode()->renderer() ) {
+    if ( parentNode()->renderer() && parentNode()->renderer()->childAllowed() ) {
+        RenderStyle* _style = document()->styleSelector()->styleForElement(this);
         m_render = new (document()->renderArena()) RenderFrameSet(this);
-        m_render->setStyle(document()->styleSelector()->styleForElement(this));
-       parentNode()->renderer()->addChild(m_render, nextRenderer());
+        m_render->setStyle(_style);
+        parentNode()->renderer()->addChild(m_render, nextRenderer());
     }
 
     NodeBaseImpl::attach();
@@ -754,8 +757,8 @@
 
     RenderStyle* style = document()->styleSelector()->styleForElement(this);
     style->ref();
-    if (document()->isURLAllowed(url.string()) &&
-        parentNode()->renderer() && style->display() != NONE) {
+    if (document()->isURLAllowed(url.string()) && parentNode()->renderer()
+        && parentNode()->renderer()->childAllowed() && style->display() != NONE) {
         m_render = new (document()->renderArena()) RenderPartObject(this);
         m_render->setStyle(style);
         parentNode()->renderer()->addChild(m_render, nextRenderer());
[prev in list] [next in list] [prev in thread] [next in thread] 

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