From 23cf1cc58499a19ee5ec06cd7de86929b0c7ac79 Mon Sep 17 00:00:00 2001 From: DarthArgus Date: Sun, 20 Nov 2016 07:47:19 -0600 Subject: [PATCH] well according to SO this looks correct https://stackoverflow.com/questions/991335/how-to-erase-delete-pointers-to-objects-stored-in-a-vector --- .../library/serverDatabase/src/shared/Persister.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/engine/server/library/serverDatabase/src/shared/Persister.cpp b/engine/server/library/serverDatabase/src/shared/Persister.cpp index a7d92062..25887d15 100755 --- a/engine/server/library/serverDatabase/src/shared/Persister.cpp +++ b/engine/server/library/serverDatabase/src/shared/Persister.cpp @@ -602,8 +602,9 @@ void Persister::saveCompleted(Snapshot *completedSnapshot) SnapshotListType::iterator i=std::remove(m_savingSnapshots.begin(),m_savingSnapshots.end(),completedSnapshot); if (i!=m_savingSnapshots.end()) { - delete (*i); - m_savingSnapshots.erase(i, m_savingSnapshots.end()); + delete *i; + i = m_savingSnapshots.erase(i, m_savingSnapshots.end()); + *i = nullptr; if (m_savingSnapshots.empty() && ConfigServerDatabase::getReportSaveTimes()) { @@ -636,8 +637,9 @@ void Persister::saveCompleted(Snapshot *completedSnapshot) { SnapshotListType::iterator j=std::remove(m_savingCharacterSnapshots.begin(),m_savingCharacterSnapshots.end(),completedSnapshot); DEBUG_FATAL(i==m_savingCharacterSnapshots.end(),("Programmer bug: SaveCompleted() called with a snapshot that wasn't in m_savingSnapshots or m_savingCharacterSnapshots.")); - delete (*j); - m_savingCharacterSnapshots.erase(j, m_savingCharacterSnapshots.end()); + delete *j; + *j = nullptr; + j = m_savingCharacterSnapshots.erase(j, m_savingCharacterSnapshots.end()); DEBUG_REPORT_LOG(ConfigServerDatabase::getReportSaveTimes(),("New character save completed\n")); } }