From ab9e0ea04e66e3d3866e5bad678ffc4177a11781 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 29 Sep 2013 14:31:02 +0300 Subject: fix crash if open rename map item dialog and walk to other map. --- src/gui/popupmenu.cpp | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) (limited to 'src/gui/popupmenu.cpp') diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp index c12365cc6..410064f7d 100644 --- a/src/gui/popupmenu.cpp +++ b/src/gui/popupmenu.cpp @@ -2668,14 +2668,29 @@ void PopupMenu::showGMPopup() RenameListener::RenameListener() : gcn::ActionListener(), - mMapItem(nullptr), + mMapItemX(0), + mMapItemY(0), mDialog(nullptr) { } +void RenameListener::setMapItem(MapItem *const mapItem) +{ + if (mapItem) + { + mMapItemX = mapItem->getX(); + mMapItemY = mapItem->getY(); + } + else + { + mMapItemX = 0; + mMapItemY = 0; + } +} + void RenameListener::action(const gcn::ActionEvent &event) { - if (event.getId() == "ok" && mMapItem && viewport && mDialog) + if (event.getId() == "ok" && viewport && mDialog) { Map *const map = viewport->getMap(); if (!map) @@ -2685,16 +2700,11 @@ void RenameListener::action(const gcn::ActionEvent &event) MapItem *item = nullptr; if (sl) { - item = sl->getTile(mMapItem->getX(), mMapItem->getY()); - if (!item) - { - sl->setTile(mMapItem->getX(), mMapItem->getY(), - mMapItem->getType()); - item = sl->getTile(mMapItem->getX(), mMapItem->getY()); - } - item->setComment(mDialog->getText()); + item = sl->getTile(mMapItemX, mMapItemY); + if (item) + item->setComment(mDialog->getText()); } - item = map->findPortalXY(mMapItem->getX(), mMapItem->getY()); + item = map->findPortalXY(mMapItemX, mMapItemY); if (item) item->setComment(mDialog->getText()); -- cgit v1.2.3-60-g2f50