From 3dceb7ee4fc1b100e249d672e77b6e080477f736 Mon Sep 17 00:00:00 2001 From: scrawl Date: Sun, 18 May 2014 18:58:32 +0200 Subject: [PATCH] Fix overwriting DialInfo --- components/esm/loaddial.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/components/esm/loaddial.cpp b/components/esm/loaddial.cpp index 5adf409bb..ee7ddbfad 100644 --- a/components/esm/loaddial.cpp +++ b/components/esm/loaddial.cpp @@ -61,29 +61,30 @@ void Dialogue::addInfo(const ESM::DialInfo& info, bool merge) ESM::Dialogue::InfoContainer::iterator it = mInfo.end(); std::map::iterator lookup; - lookup = mLookup.find(info.mPrev); + + lookup = mLookup.find(info.mId); if (lookup != mLookup.end()) { it = lookup->second; - - mLookup[info.mId] = mInfo.insert(++it, info); + *it = info; return; } - lookup = mLookup.find(info.mNext); + lookup = mLookup.find(info.mPrev); if (lookup != mLookup.end()) { it = lookup->second; - mLookup[info.mId] = mInfo.insert(it, info); + mLookup[info.mId] = mInfo.insert(++it, info); return; } - lookup = mLookup.find(info.mId); + lookup = mLookup.find(info.mNext); if (lookup != mLookup.end()) { it = lookup->second; - *it = info; + + mLookup[info.mId] = mInfo.insert(it, info); return; }