<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/104536/">http://git.reviewboard.kde.org/r/104536/</a>
     </td>
    </tr>
   </table>
   <br />



 <p>Ship it!</p>



 <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Nice to see the memory leak fixed.

Seems to work for me.</pre>
 <br />







<p>- Bernhard</p>


<br />
<p>On April 10th, 2012, 4:05 p.m., Jens-Michael Hoffmann wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Marble.</div>
<div>By Jens-Michael Hoffmann.</div>


<p style="color: grey;"><i>Updated April 10, 2012, 4:05 p.m.</i></p>






<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">    Sometimes the config dialog was passed as parent widget, sometimes not. In
    combination with the empty destructor this led to a memory leak. In addition
    it makes no sense to have the config dialog as parent for the svg widgets, as
    their relationship is more peer or cousin like.
    
    This fixes:
    ==1364== 8,176 bytes in 1 blocks are possibly lost in loss record 7,992 of 8,032
    ==1364==    at 0x4029A32: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==1364==    by 0x6D7759A: qRealloc(void*, unsigned long) (qmalloc.cpp:65)
    ==1364==    by 0x6DE4B18: QVectorData::reallocate(QVectorData*, int, int, int) (qvector.cpp:74)
    ==1364==    by 0x7809EDC: QVector<QPainterPath::Element>::realloc(int, int) (qvector.h:481)
    ==1364==    by 0x78120B8: QVector<QPainterPath::Element>::append(QPainterPath::Element const&) (qvector.h:549)
    ==1364==    by 0x783FBBE: QPainterPath::lineTo(QPointF const&) (qpainterpath.cpp:690)
    ==1364==    by 0x893831C: QPainterPath::lineTo(double, double) (qpainterpath.h:305)
    ==1364==    by 0x89293E0: parsePathDataFast(QStringRef const&, QPainterPath&) (qsvghandler.cpp:1630)
    ==1364==    by 0x8930B1E: createPathNode(QSvgNode*, QXmlStreamAttributes const&, QSvgHandler*) (qsvghandler.cpp:2882)
    ==1364==    by 0x8935ABF: QSvgHandler::startElement(QString const&, QXmlStreamAttributes const&) (qsvghandler.cpp:3640)
    ==1364==    by 0x8935199: QSvgHandler::parse() (qsvghandler.cpp:3559)
    ==1364==    by 0x8935050: QSvgHandler::init() (qsvghandler.cpp:3539)
    
    ==1364== 203,178 (224 direct, 202,954 indirect) bytes in 1 blocks are definitely lost in loss record 8,021 of 8,032
    ==1364==    at 0x4029447: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==1364==    by 0x8930B28: createPathNode(QSvgNode*, QXmlStreamAttributes const&, QSvgHandler*) (qsvghandler.cpp:2884)
    ==1364==    by 0x8935ABF: QSvgHandler::startElement(QString const&, QXmlStreamAttributes const&) (qsvghandler.cpp:3640)
    ==1364==    by 0x8935199: QSvgHandler::parse() (qsvghandler.cpp:3559)
    ==1364==    by 0x8935050: QSvgHandler::init() (qsvghandler.cpp:3539)
    ==1364==    by 0x8934B3D: QSvgHandler::QSvgHandler(QIODevice*) (qsvghandler.cpp:3516)
    ==1364==    by 0x894F49D: QSvgTinyDocument::load(QString const&) (qsvgtinydocument.cpp:187)
    ==1364==    by 0x89534E6: bool loadDocument<QString>(QSvgRenderer*, QSvgRendererPrivate*, QString const&) (qsvgrenderer.cpp:317)
    ==1364==    by 0x8952CBE: QSvgRenderer::load(QString const&) (qsvgrenderer.cpp:343)
    ==1364==    by 0x89527AE: QSvgRenderer::QSvgRenderer(QString const&, QObject*) (qsvgrenderer.cpp:140)
    ==1364==    by 0x8953E53: QSvgWidget::QSvgWidget(QString const&, QWidget*) (qsvgwidget.cpp:107)
    ==1364==    by 0x1E96B943: Marble::OverviewMap::loadPlanetMaps() (OverviewMap.cpp:456)
    
    ==1364== 204,330 (16 direct, 204,314 indirect) bytes in 1 blocks are definitely lost in loss record 8,023 of 8,032
    ==1364==    at 0x4029447: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==1364==    by 0x8953E3D: QSvgWidget::QSvgWidget(QString const&, QWidget*) (qsvgwidget.cpp:107)
    ==1364==    by 0x1E96B943: Marble::OverviewMap::loadPlanetMaps() (OverviewMap.cpp:456)
    ==1364==    by 0x1E96D064: Marble::OverviewMap::updateSettings() (OverviewMap.cpp:375)
    ==1364==    by 0x1E96D483: Marble::OverviewMap::qt_metacall(QMetaObject::Call, int, void**) (OverviewMap.moc:92)
    ==1364==    by 0x6EA058D: QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) (qmetaobject.cpp:237)
    ==1364==    by 0x6EB50A9: QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (qobject.cpp:3280)
    ==1364==    by 0x511E4A4: Marble::RenderPlugin::settingsChanged(QString) (RenderPlugin.moc:125)
    ==1364==    by 0x1E96DAEB: Marble::OverviewMap::setSettings(QHash<QString, QVariant> const&) (OverviewMap.cpp:332)
    ==1364==    by 0x430384: Marble::MarblePart::readPluginSettings() (marble_part.cpp:1641)
    ==1364==    by 0x4317E9: Marble::MarblePart::readSettings() (marble_part.cpp:558)
    ==1364==    by 0x433316: Marble::MarblePart::MarblePart(QWidget*, QObject*, QList<QVariant> const&) (marble_part.cpp:170)
    
    ==1364== 584,202 (96 direct, 584,106 indirect) bytes in 3 blocks are definitely lost in loss record 8,027 of 8,032
    ==1364==    at 0x402994D: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==1364==    by 0x6D7755B: qMalloc(unsigned long) (qmalloc.cpp:55)
    ==1364==    by 0x6DA0EB4: QHashData::allocateNode(int) (qhash.cpp:175)
    ==1364==    by 0x8951D21: QHash<QString, QSvgNode*>::createNode(unsigned int, QString const&, QSvgNode* const&, QHashNode<QString, QSvgNode*>**) (qhash.h:543)
    ==1364==    by 0x8951569: QHash<QString, QSvgNode*>::insert(QString const&, QSvgNode* const&) (qhash.h:761)
    ==1364==    by 0x89501CD: QSvgTinyDocument::addNamedNode(QString const&, QSvgNode*) (qsvgtinydocument.cpp:355)
    ==1364==    by 0x8947D8F: QSvgStructureNode::addChild(QSvgNode*, QString const&) (qsvgstructure.cpp:107)
    ==1364==    by 0x8935B66: QSvgHandler::startElement(QString const&, QXmlStreamAttributes const&) (qsvghandler.cpp:3650)
    ==1364==    by 0x8935199: QSvgHandler::parse() (qsvghandler.cpp:3559)
    ==1364==    by 0x8935050: QSvgHandler::init() (qsvghandler.cpp:3539)
    ==1364==    by 0x8934B3D: QSvgHandler::QSvgHandler(QIODevice*) (qsvghandler.cpp:3516)
    ==1364==    by 0x894F49D: QSvgTinyDocument::load(QString const&) (qsvgtinydocument.cpp:187)
    
    ==1364== 1,234,990 (160 direct, 1,234,830 indirect) bytes in 2 blocks are definitely lost in loss record 8,028 of 8,032
    ==1364==    at 0x402994D: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==1364==    by 0x6D7755B: qMalloc(unsigned long) (qmalloc.cpp:55)
    ==1364==    by 0x6DE4ABC: QVectorData::allocate(int, int) (qvector.cpp:67)
    ==1364==    by 0x6EB9808: QVector<QObjectPrivate::ConnectionList>::malloc(int) (qvector.h:393)
    ==1364==    by 0x6EB889F: QVector<QObjectPrivate::ConnectionList>::realloc(int, int) (qvector.h:466)
    ==1364==    by 0x6EB75FC: QVector<QObjectPrivate::ConnectionList>::resize(int) (qvector.h:331)
    ==1364==    by 0x6EAEC1B: QObjectPrivate::addConnection(int, QObjectPrivate::Connection*) (qobject.cpp:347)
    ==1364==    by 0x6EB3EDD: QMetaObjectPrivate::connect(QObject const*, int, QObject const*, int, int, int*) (qobject.cpp:2919)
    ==1364==    by 0x6EB348C: QObject::connect(QObject const*, char const*, QObject const*, char const*, Qt::ConnectionType) (qobject.cpp:2590)
    ==1364==    by 0x8953EB2: QSvgWidget::QSvgWidget(QString const&, QWidget*) (qsvgwidget.cpp:109)
    ==1364==    by 0x1E96B943: Marble::OverviewMap::loadPlanetMaps() (OverviewMap.cpp:456)
    ==1364==    by 0x1E96D064: Marble::OverviewMap::updateSettings() (OverviewMap.cpp:375)
</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Ran Marble under valgrind with switching between all map themes.
</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>src/plugins/render/overviewmap/OverviewMap.cpp <span style="color: grey">(80b4efb)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/104536/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>








  </div>
 </body>
</html>