diff --git a/components/esm/esmreader.cpp b/components/esm/esmreader.cpp index a6b947dd3..2f4f4917c 100644 --- a/components/esm/esmreader.cpp +++ b/components/esm/esmreader.cpp @@ -27,6 +27,7 @@ ESMReader::ESMReader() , mEncoder(nullptr) , mFileSize(0) { + clearCtx(); } int ESMReader::getFormat() const @@ -50,16 +51,21 @@ void ESMReader::restoreContext(const ESM_Context &rc) void ESMReader::close() { mEsm.reset(); - mCtx.filename.clear(); - mCtx.leftFile = 0; - mCtx.leftRec = 0; - mCtx.leftSub = 0; - mCtx.subCached = false; - mCtx.recName.clear(); - mCtx.subName.clear(); + clearCtx(); mHeader.blank(); } +void ESMReader::clearCtx() +{ + mCtx.filename.clear(); + mCtx.leftFile = 0; + mCtx.leftRec = 0; + mCtx.leftSub = 0; + mCtx.subCached = false; + mCtx.recName.clear(); + mCtx.subName.clear(); +} + void ESMReader::openRaw(Files::IStreamPtr _esm, const std::string& name) { close(); diff --git a/components/esm/esmreader.hpp b/components/esm/esmreader.hpp index 6e84fa7d4..25a339375 100644 --- a/components/esm/esmreader.hpp +++ b/components/esm/esmreader.hpp @@ -269,6 +269,8 @@ public: size_t getFileSize() const { return mFileSize; } private: + void clearCtx(); + Files::IStreamPtr mEsm; ESM_Context mCtx;