<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/><title></title></head><body><p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;">Hi Cui,</span></p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;">thanks for looking into this and submitting the patch - I will look into it.</span></p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;">There is some extensive documentation for getting started with KDE development. However as Marble can be compiled without KDE dependencies there are lots of technical aspects that might not apply.</span></p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;"><a href="https://community.kde.org/Infrastructure/GitLab#Submitting_a_merge_request">https://community.kde.org/Infrastructure/GitLab#Submitting_a_merge_request</a></span></p>
<p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;"><a href="https://community.kde.org/Get_Involved/development#Submitting_your_first_patch">https://community.kde.org/Get_Involved/development#Submitting_your_first_patch</a></span></p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;">The actual repo is at</span></p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;">https://invent.kde.org/education/marble</span></p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;">Best regards</span></p>
<p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;">Torsten</span></p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"><span style="font-family: arial,helvetica,sans-serif; font-size: 10pt; color: #000000; text-decoration: none;"> </span></p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;">-----Original-Nachricht-----</p>
<p style="margin: 0px;">Betreff: [Bugfix] Fix unconsistent remove in PlacemarkLayout</p>
<p style="margin: 0px;">Datum: 2023-03-25T15:24:45+0100</p>
<p style="margin: 0px;">Von: "?? WANG Cui" <iucgnaw@msn.com></p>
<p style="margin: 0px;">An: "Mailinglist, Marble-Devel" <marble-devel@kde.org></p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"> </p>
<p style="margin: 0px;"> </p>
<div style="position: relative; color: #000000; font: 12px Arial,Helvetica,sans-serif;">
<div class="WordSection1">
<p class="MsoNormal">Hi,</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.</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.</p>
<p class="MsoNormal">Patch is as attached.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">diff --git a/src/lib/marble/PlacemarkLayout.cpp b/src/lib/marble/PlacemarkLayout.cpp</p>
<p class="MsoNormal">index a66a1f46c..3c684b662 100644</p>
<p class="MsoNormal">--- a/src/lib/marble/PlacemarkLayout.cpp</p>
<p class="MsoNormal">+++ b/src/lib/marble/PlacemarkLayout.cpp</p>
<p class="MsoNormal">@@ -271,6 +271,7 @@ void PlacemarkLayout::removePlacemarks( const QModelIndex& parent, int first, in</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">         int zoomLevel = placemark->zoomLevel();</p>
<p class="MsoNormal">         TileId key = TileId::fromCoordinates( coordinates, zoomLevel );</p>
<p class="MsoNormal">+        m_paintOrder.erase(std::remove(m_paintOrder.begin(), m_paintOrder.end(), m_visiblePlacemarks[placemark]), m_paintOrder.end());</p>
<p class="MsoNormal">         delete m_visiblePlacemarks[placemark];</p>
<p class="MsoNormal">         m_visiblePlacemarks.remove(placemark);</p>
<p class="MsoNormal">         m_placemarkCache[key].removeAll( placemark );</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">WANG Cui</p>
</div>
</div></body></html>