[core] crashes on wrong sequence calls. do it more secure

This commit is contained in:
ExMix 2014-05-28 11:41:45 +03:00 committed by Alex Zolotarev
parent 062d39a078
commit 6fd88f4b62
5 changed files with 9 additions and 21 deletions

View file

@ -20,7 +20,6 @@
BookmarkManager::BookmarkManager(Framework & f)
: m_framework(f)
, m_activeMark(NULL)
, m_bmScreen(0)
, m_lastScale(1.0)
, m_cache(NULL)
@ -308,17 +307,10 @@ bool BookmarkManager::DeleteBmCategory(size_t index)
void BookmarkManager::ActivateMark(UserMark const * mark)
{
if (m_activeMark != NULL)
{
m_activeMark->Diactivate();
m_activeMark = NULL;
}
if (mark == NULL)
return;
m_activeMark = mark;
m_activeMark->Activate();
for_each(m_categories.begin(), m_categories.end(), bind(&UserMarkContainer::DiactivateMark, _1));
for_each(m_userMarkLayers.begin(), m_userMarkLayers.end(), bind(&UserMarkContainer::DiactivateMark, _1));
if (mark != NULL)
mark->Activate();
}
UserMark const * BookmarkManager::FindNearestUserMark(const m2::AnyRectD & rect)

View file

@ -17,7 +17,6 @@ class BookmarkManager : private noncopyable
Framework & m_framework;
vector<UserMarkContainer * > m_userMarkLayers;
UserMark const * m_activeMark;
graphics::Screen * m_bmScreen;
mutable double m_lastScale;

View file

@ -31,8 +31,3 @@ void UserMark::Activate() const
{
m_container->ActivateMark(this);
}
void UserMark::Diactivate() const
{
m_container->DiactivateMark();
}

View file

@ -39,7 +39,6 @@ public:
protected:
friend class BookmarkManager;
void Activate() const;
void Diactivate() const;
protected:
m2::PointD m_ptOrg;

View file

@ -120,8 +120,11 @@ void UserMarkContainer::ActivateMark(UserMark const * mark)
void UserMarkContainer::DiactivateMark()
{
KillActivationAnim();
m_activeMark = NULL;
if (m_activeMark != NULL)
{
KillActivationAnim();
m_activeMark = NULL;
}
}
void UserMarkContainer::Clear()