<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:\7B49\7EBF;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"\@\7B49\7EBF";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:11.0pt;
        font-family:\7B49\7EBF;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:\7B49\7EBF;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:\7B49\7EBF;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal">When I check Marble GitHub, but don’t find guidance which branch to do pull request, therefore I submit bugfix patch here.<o:p></o:p></p>
<p class="MsoNormal">In PlacemarkLayout, when remove a placemark, m_paintOrder item is not removed when m_visiblePlacemarks remove item. In extreme case ( i.e. updateFeature() during plugin render() ), the m_paintOrder refer to deleted Placemark then segmentation
 fault.<o:p></o:p></p>
<p class="MsoNormal">Patch is as attached.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">diff --git a/src/lib/marble/PlacemarkLayout.cpp b/src/lib/marble/PlacemarkLayout.cpp<o:p></o:p></p>
<p class="MsoNormal">index a66a1f46c..3c684b662 100644<o:p></o:p></p>
<p class="MsoNormal">--- a/src/lib/marble/PlacemarkLayout.cpp<o:p></o:p></p>
<p class="MsoNormal">+++ b/src/lib/marble/PlacemarkLayout.cpp<o:p></o:p></p>
<p class="MsoNormal">@@ -271,6 +271,7 @@ void PlacemarkLayout::removePlacemarks( const QModelIndex& parent, int first, in<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">         int zoomLevel = placemark->zoomLevel();<o:p></o:p></p>
<p class="MsoNormal">         TileId key = TileId::fromCoordinates( coordinates, zoomLevel );<o:p></o:p></p>
<p class="MsoNormal">+        m_paintOrder.erase(std::remove(m_paintOrder.begin(), m_paintOrder.end(), m_visiblePlacemarks[placemark]), m_paintOrder.end());<o:p></o:p></p>
<p class="MsoNormal">         delete m_visiblePlacemarks[placemark];<o:p></o:p></p>
<p class="MsoNormal">         m_visiblePlacemarks.remove(placemark);<o:p></o:p></p>
<p class="MsoNormal">         m_placemarkCache[key].removeAll( placemark );<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">WANG Cui<o:p></o:p></p>
</div>
</body>
</html>