[webkit-changes] cvs commit: WebCore/khtml/rendering render_block.cpp render_text.cpp render_text.h

Maciej mjs at opensource.apple.com
Tue Aug 30 22:12:55 PDT 2005


mjs         05/08/30 22:12:55

  Modified:    .        ChangeLog
               khtml/rendering render_block.cpp render_text.cpp
                        render_text.h
  Log:
          Reviewed by Justin.
  
          <rdar://problem/4232371> leak of DOMStringImpl called from DOMStringImpl::substring, seen running webkit tests
          <rdar://problem/4232355> leak of DOMStringImpl called from RenderTextFragment::originalString, seen running webkit tests
  
          Test cases added: None, these leaks were already caught by the layout tests.
  
          * khtml/rendering/render_block.cpp:
          (khtml::RenderBlock::updateFirstLetter):
          * khtml/rendering/render_container.cpp:
          (RenderContainer::updatePseudoChild):
          * khtml/rendering/render_text.cpp:
          (RenderText::setStyle):
          (RenderText::originalString):
          (RenderTextFragment::originalString):
          * khtml/rendering/render_text.h:
  
  Revision  Changes    Path
  1.49      +19 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- ChangeLog	31 Aug 2005 05:09:02 -0000	1.48
  +++ ChangeLog	31 Aug 2005 05:12:53 -0000	1.49
  @@ -1,5 +1,24 @@
   2005-08-30  Maciej Stachowiak  <mjs at apple.com>
   
  +        Reviewed by Justin.
  +
  +        <rdar://problem/4232371> leak of DOMStringImpl called from DOMStringImpl::substring, seen running webkit tests
  +        <rdar://problem/4232355> leak of DOMStringImpl called from RenderTextFragment::originalString, seen running webkit tests
  +        
  +        Test cases added: None, these leaks were already caught by the layout tests.
  +
  +        * khtml/rendering/render_block.cpp:
  +        (khtml::RenderBlock::updateFirstLetter):
  +        * khtml/rendering/render_container.cpp:
  +        (RenderContainer::updatePseudoChild):
  +        * khtml/rendering/render_text.cpp:
  +        (RenderText::setStyle):
  +        (RenderText::originalString):
  +        (RenderTextFragment::originalString):
  +        * khtml/rendering/render_text.h:
  +
  +2005-08-30  Maciej Stachowiak  <mjs at apple.com>
  +
           Reviewed by Vicki
   
   	<rdar://problem/4231978> many leaks of StyleSurroundData called beneath RenderStyle::setMarginTop, seen running webkit tests
  
  
  
  1.201     +4 -4      WebCore/khtml/rendering/render_block.cpp
  
  Index: render_block.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_block.cpp,v
  retrieving revision 1.200
  retrieving revision 1.201
  diff -u -r1.200 -r1.201
  --- render_block.cpp	31 Aug 2005 05:09:03 -0000	1.200
  +++ render_block.cpp	31 Aug 2005 05:12:54 -0000	1.201
  @@ -3343,10 +3343,10 @@
               // The original string is going to be either a generated content string or a DOM node's
               // string.  We want the original string before it got transformed in case first-letter has
               // no text-transform or a different text-transform applied to it.
  -            DOMStringImpl* oldText = textObj->originalString();
  +            SharedPtr<DOMStringImpl> oldText = textObj->originalString();
               KHTMLAssert(oldText);
               
  -            if (oldText && oldText->l >= 1) {
  +            if (oldText.notNull() && oldText->l >= 1) {
                   unsigned int length = 0;
                   while ( length < oldText->l &&
                           ( (oldText->s+length)->isSpace() || (oldText->s+length)->isPunct() ) )
  @@ -3355,7 +3355,7 @@
                   //kdDebug( 6040 ) << "letter= '" << DOMString(oldText->substring(0,length)).qstring() << "'" << endl;
                   
                   RenderTextFragment* remainingText = 
  -                    new (renderArena()) RenderTextFragment(textObj->node(), oldText, length, oldText->l-length);
  +                    new (renderArena()) RenderTextFragment(textObj->node(), oldText.get(), length, oldText->l-length);
                   remainingText->setStyle(textObj->style());
                   if (remainingText->element())
                       remainingText->element()->setRenderer(remainingText);
  @@ -3365,7 +3365,7 @@
                   firstLetterContainer->addChild(remainingText, nextObj);
                   
                   RenderTextFragment* letter = 
  -                    new (renderArena()) RenderTextFragment(remainingText->node(), oldText, 0, length);
  +                    new (renderArena()) RenderTextFragment(remainingText->node(), oldText.get(), 0, length);
                   RenderStyle* newStyle = new (renderArena()) RenderStyle();
                   newStyle->inheritFrom(pseudoStyle);
                   letter->setStyle(newStyle);
  
  
  
  1.193     +7 -7      WebCore/khtml/rendering/render_text.cpp
  
  Index: render_text.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_text.cpp,v
  retrieving revision 1.192
  retrieving revision 1.193
  diff -u -r1.192 -r1.193
  --- render_text.cpp	30 Aug 2005 09:30:21 -0000	1.192
  +++ render_text.cpp	31 Aug 2005 05:12:54 -0000	1.193
  @@ -805,9 +805,9 @@
           RenderObject::setStyle( _style );
   
           if (needToTransformText) {
  -            DOM::DOMStringImpl* textToTransform = originalString();
  -            if (textToTransform)
  -                setText(textToTransform, true);
  +            SharedPtr<DOMStringImpl> textToTransform = originalString();
  +            if (textToTransform.notNull())
  +                setText(textToTransform.get(), true);
           }
   #if APPLE_CHANGES
           // setText also calls cacheWidths(), so there is no need to call it again in that case.
  @@ -900,9 +900,9 @@
       return false;
   }
   
  -DOM::DOMStringImpl* RenderText::originalString() const
  +SharedPtr<DOMStringImpl> RenderText::originalString() const
   {
  -    return element() ? element()->string() : 0;
  +    return element() ? SharedPtr<DOMStringImpl>(element()->string()) : SharedPtr<DOMStringImpl>();
   }
   
   void RenderText::absoluteRects(QValueList<QRect>& rects, int _tx, int _ty)
  @@ -1889,7 +1889,7 @@
       return true;
   }
   
  -DOM::DOMStringImpl* RenderTextFragment::originalString() const
  +SharedPtr<DOMStringImpl> RenderTextFragment::originalString() const
   {
       DOM::DOMStringImpl* result = 0;
       if (element())
  @@ -1898,7 +1898,7 @@
           result = contentString();
       if (result && (start() > 0 || start() < result->l))
           result = result->substring(start(), end());
  -    return result;
  +    return SharedPtr<DOMStringImpl>(result);
   }
   #undef BIDI_DEBUG
   #undef DEBUG_LAYOUT
  
  
  
  1.86      +2 -2      WebCore/khtml/rendering/render_text.h
  
  Index: render_text.h
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/rendering/render_text.h,v
  retrieving revision 1.85
  retrieving revision 1.86
  diff -u -r1.85 -r1.86
  --- render_text.h	29 Aug 2005 18:00:45 -0000	1.85
  +++ render_text.h	31 Aug 2005 05:12:54 -0000	1.86
  @@ -165,7 +165,7 @@
       virtual ~RenderText();
   
       virtual bool isTextFragment() const;
  -    virtual DOM::DOMStringImpl* originalString() const;
  +    virtual SharedPtr<DOM::DOMStringImpl> originalString() const;
       
       virtual const char *renderName() const { return "RenderText"; }
   
  @@ -330,7 +330,7 @@
       uint end() const { return m_end; }
       
       DOM::DOMStringImpl* contentString() const { return m_generatedContentStr; }
  -    virtual DOM::DOMStringImpl* originalString() const;
  +    virtual SharedPtr<DOM::DOMStringImpl> originalString() const;
       
   private:
       uint m_start;
  
  
  



More information about the webkit-changes mailing list