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

List:       kde-commits
Subject:    kdenonbeta
From:       Rob Buis <rwlbuis () xs4all ! nl>
Date:       2005-10-16 14:02:12
Message-ID: 1129471332.881860.18443.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 471115 by buis:

Memleak fixes:

* ksvg2/svg/SVGImageElementImpl.cpp:
  (SVGImageElementImpl::notifyFinished): deref _x, _y, _width, _height
* ksvg2/svg/SVGDocumentImpl.cpp:
  (SVGDocumentImpl::dispatchKeyEvent): deref textContent()
* kdom/css/CSSPrimitiveValueImpl.cpp:
  (CSSPrimitiveValueImpl::cssText): cleanup
* kdom/css/cssparser.cpp:
  (CSSParser::parseValue): deref returned string of removeProperty
* kdom/css/CSSValueListImpl.cpp:
  (CSSValueListImpl::cssText): deref return value of cssText

CCMAIL: wildfox@kde.org


 M  +1 -5      kdom/css/CSSPrimitiveValueImpl.cpp  
 M  +5 -1      kdom/css/CSSValueListImpl.cpp  
 M  +2 -1      kdom/css/cssparser.cpp  
 M  +4 -2      ksvg2/svg/SVGDocumentImpl.cpp  
 M  +4 -0      ksvg2/svg/SVGImageElementImpl.cpp  


--- trunk/kdenonbeta/kdom/css/CSSPrimitiveValueImpl.cpp #471114:471115
@@ -298,15 +298,11 @@
     // ### return the original value instead of a generated one (e.g. color
     // name if it was specified) - check what spec says about this
     DOMStringImpl *text = CSSHelper::unitTypeToString(m_type);
-    if(text)
-        text->ref();
 
     if(text && !text->isEmpty())
     {
         QString str = text->string();
-        text->deref();
-
-        text = new DOMStringImpl(QString::number(m_value.num) + text->string());
+        KDOM_SAFE_SET(text, new DOMStringImpl(QString::number(m_value.num) + str));
     }
     else
     {
--- trunk/kdenonbeta/kdom/css/CSSValueListImpl.cpp #471114:471115
@@ -53,7 +53,11 @@
     DOMStringImpl *result = new DOMStringImpl();
 
     for(Q3PtrListIterator<CSSValueImpl> iterator(m_values); iterator.current(); \
                ++iterator)
-        result->append(iterator.current()->cssText());
+    {
+        DOMStringImpl *text = iterator.current()->cssText();
+        result->append(text);
+        if(text) text->deref();
+   }
 
     return result;
 }
--- trunk/kdenonbeta/kdom/css/cssparser.cpp #471114:471115
@@ -280,7 +280,8 @@
         ok = true;
         for(int i = 0; i < numParsedProperties; i++)
         {
-            declaration->removeProperty(parsedProperties[i]->m_id, nonCSSHint);
+            DOMStringImpl *val = \
declaration->removeProperty(parsedProperties[i]->m_id, nonCSSHint); +            \
if(val) val->deref();  declaration->values()->append(parsedProperties[i]);
         }
 
--- trunk/kdenonbeta/ksvg2/svg/SVGDocumentImpl.cpp #471114:471115
@@ -616,7 +616,7 @@
     event->deref();
 }
 
-bool SVGDocumentImpl::dispatchKeyEvent(KDOM::EventTargetImpl *target, QKeyEvent \
*key, bool keypress) +bool SVGDocumentImpl::dispatchKeyEvent(KDOM::EventTargetImpl \
*target, QKeyEvent *key, bool /*keypress*/)  {
     // dispatch key event
     KDOM::KeyboardEventImpl *keyEventImpl = static_cast<KDOM::KeyboardEventImpl \
*>(createEvent(KDOM::DOMString("KeyboardEvents").handle())); @@ -803,7 +803,9 @@
         else
         {
             // no src attribute - execute from contents of tag
-            SVGScriptElementImpl::executeScript(this, script->textContent());
+            KDOM::DOMStringImpl *text = script->textContent();
+            SVGScriptElementImpl::executeScript(this, text);
+            if(text) text->deref();
             ++(*m_scriptsIt);
 
             needsStyleSelectorUpdate = true;
--- trunk/kdenonbeta/ksvg2/svg/SVGImageElementImpl.cpp #471114:471115
@@ -214,6 +214,10 @@
 
             m_svgDoc->attach();
             m_canvasItem->appendItem(root->canvasItem());
+            if(_x) _x->deref();
+            if(_y) _y->deref();
+            if(_width) _width->deref();
+            if(_height) _height->deref();
         }
 
         m_cachedDocument->deref(this);


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

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