Browse Source

Fixup directories if parent already existed with different case

Fixes: issue #57
pull/1/merge
Daniel Scharrer 9 years ago
parent
commit
e06eaeb2bb
  1. 3
      CHANGELOG
  2. 6
      src/cli/extract.cpp

3
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

6
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;
}

Loading…
Cancel
Save