diff --git a/msvc/src/mmap.cpp b/msvc/src/mmap.cpp index 6be7a8d1..f85a5022 100644 --- a/msvc/src/mmap.cpp +++ b/msvc/src/mmap.cpp @@ -174,9 +174,9 @@ int munmap(void *start, size_t length) return -1; } - UnmapViewOfFile( g_mmapInfos[g_curMMapInfos].start ); - CloseHandle( g_mmapInfos[g_curMMapInfos].hMap ); - CloseHandle( g_mmapInfos[g_curMMapInfos].hFile ); + UnmapViewOfFile( g_mmapInfos[i].start ); + CloseHandle( g_mmapInfos[i].hMap ); + CloseHandle( g_mmapInfos[i].hFile ); EnterCriticalSection( &cs ); for( j = i + 1; j < g_curMMapInfos; j++ ) { diff --git a/src/basicio.cpp b/src/basicio.cpp index 11763e49..e81e5768 100644 --- a/src/basicio.cpp +++ b/src/basicio.cpp @@ -77,7 +77,6 @@ namespace Exiv2 { FileIo::~FileIo() { - munmap(); close(); } @@ -368,9 +367,7 @@ namespace Exiv2 { int FileIo::open(const std::string& mode) { - if (fp_ != 0) { - std::fclose(fp_); - } + close(); openMode_ = mode; opMode_ = opSeek; @@ -386,6 +383,7 @@ namespace Exiv2 { int FileIo::close() { + munmap(); if (fp_ != 0) { std::fclose(fp_); fp_= 0;