diff --git a/CHANGELOG b/CHANGELOG index 5d19d8c..17d27cc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,4 +1,7 @@ +innoextract 1.7 (TDB) + - Fixed wrong case in parent directory when creating subdirectories + innoextract 1.6 (2016-03-24) - Added support for Inno Setup 5.5.7 (and 5.5.8) installers - Added a --collisions=rename-all option diff --git a/src/cli/extract.cpp b/src/cli/extract.cpp index 8fe500c..031b2ef 100644 --- a/src/cli/extract.cpp +++ b/src/cli/extract.cpp @@ -381,11 +381,17 @@ static bool insert_dirs(DirectoriesMap & processed_directories, const path_filte size_t oldlength = dir.length(); if(insert_dirs(processed_directories, includes, internal_dir, dir, implied)) { + // Existing dir case differs, fix path if(dir.length() == oldlength) { path.replace(0, dir.length(), dir); } else { path = dir + path.substr(oldlength); } + // Also fix previously inserted directory + DirectoriesMap::iterator inserted = processed_directories.find(internal_dir); + if(inserted != processed_directories.end()) { + inserted->second.set_path(dir); + } return true; }