diff -Nru innoextract-1.9~dev+2019-09-22/CHANGELOG innoextract-1.9~dev+2020-01-12/CHANGELOG --- innoextract-1.9~dev+2019-09-22/CHANGELOG 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/CHANGELOG 2020-01-12 20:23:41.000000000 +0000 @@ -1,6 +1,8 @@ innoextract 1.9 (TBD) - Fixed output directory being created for unsupported installers + - Fixed some safe non-ASCII characters being stripped from filenames + - Fixed handling of path separators in Japanese and Korean installers innoextract 1.8 (2019-09-15) - Added support for Inno Setup 6.0.0 installers diff -Nru innoextract-1.9~dev+2019-09-22/CMakeLists.txt innoextract-1.9~dev+2020-01-12/CMakeLists.txt --- innoextract-1.9~dev+2019-09-22/CMakeLists.txt 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/CMakeLists.txt 2020-01-12 20:23:41.000000000 +0000 @@ -1,13 +1,11 @@ -project(innoextract) - -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 2.8...3.15) -if(CMAKE_VERSION VERSION_GREATER 3.15) - cmake_policy(VERSION 3.15) -else() +if(CMAKE_VERSION VERSION_LESS 3.12) cmake_policy(VERSION ${CMAKE_VERSION}) endif() +project(innoextract) + # Define configuration options diff -Nru innoextract-1.9~dev+2019-09-22/debian/changelog innoextract-1.9~dev+2020-01-12/debian/changelog --- innoextract-1.9~dev+2019-09-22/debian/changelog 2019-09-22 23:23:00.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/debian/changelog 2020-01-12 20:23:41.000000000 +0000 @@ -1,12 +1,10 @@ -innoextract (1.9~dev+2019-09-22-0ppa1~xenial) xenial; urgency=low +innoextract (1.9~dev+2020-01-12-0ppa1~xenial) xenial; urgency=low * This is an automatically generated development snapshot! - * Fixed build with newer Boost versions that ship boost-config.cmake with - imported targets - * Fixed output directory being created for unsupported installers - * Improved temporary directory handling with --gog + * Fixed some safe non-ASCII characters being stripped from filenames + * Fixed handling of path separators in Japanese and Korean installers - -- Daniel Scharrer Mon, 23 Sep 2019 01:23:00 +0200 + -- Daniel Scharrer Sun, 12 Jan 2020 21:23:41 +0100 innoextract (1.8-0.1) stable; urgency=low diff -Nru innoextract-1.9~dev+2019-09-22/debian/control innoextract-1.9~dev+2020-01-12/debian/control --- innoextract-1.9~dev+2019-09-22/debian/control 2018-12-09 21:02:21.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/debian/control 2020-01-12 20:23:41.000000000 +0000 @@ -4,7 +4,7 @@ Maintainer: Daniel Scharrer Build-Depends: debhelper (>= 7.0.50), cmake (>= 2.8), libboost-dev, libboost-iostreams-dev , libboost-filesystem-dev, libboost-date-time-dev, libboost-system-dev, libboost-program-options-dev, liblzma-dev Standards-Version: 3.9.4 -Homepage: http://constexpr.org/innoextract/ +Homepage: https://constexpr.org/innoextract/ Vcs-Git: git://github.com/dscharrer/innoextract.git Vcs-Browser: https://github.com/dscharrer/innoextract diff -Nru innoextract-1.9~dev+2019-09-22/debian/copyright innoextract-1.9~dev+2020-01-12/debian/copyright --- innoextract-1.9~dev+2019-09-22/debian/copyright 2019-09-15 07:56:53.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/debian/copyright 2020-01-12 20:23:41.000000000 +0000 @@ -1,6 +1,6 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: innoextract -Source: http://constexpr.org/innoextract/ +Source: https://constexpr.org/innoextract/ Files: * Copyright: 2011-2019 Daniel Scharrer diff -Nru innoextract-1.9~dev+2019-09-22/doc/innoextract.1.in innoextract-1.9~dev+2020-01-12/doc/innoextract.1.in --- innoextract-1.9~dev+2019-09-22/doc/innoextract.1.in 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/doc/innoextract.1.in 2020-01-12 20:23:41.000000000 +0000 @@ -358,12 +358,12 @@ \fBcabextract\fP(1), \fBunar\fP(1), \fBunrar\fP(1), \fBunshield\fP(1), \fBtzset\fP(3) .SH BUGS .PP -Please report bugs to http://innoextract.constexpr.org/issues. +Please report bugs to https://innoextract.constexpr.org/issues. .SH CREDITS .PP \fBinnoextract\fP is distributed under the zlib/libpng license. See the LICENSE file for details. .PP -A website is available at http://constexpr.org/innoextract/. +A website is available at https://constexpr.org/innoextract/. .PP This program uses the excellent lzma/xz decompression library written by Lasse Collin. .SH AUTHOR diff -Nru innoextract-1.9~dev+2019-09-22/README.md innoextract-1.9~dev+2020-01-12/README.md --- innoextract-1.9~dev+2019-09-22/README.md 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/README.md 2020-01-12 20:23:41.000000000 +0000 @@ -1,33 +1,33 @@ # innoextract - A tool to unpack installers created by Inno Setup -[Inno Setup](http://www.jrsoftware.org/isinfo.php) is a tool to create installers for Microsoft Windows applications. innoextract allows to extract such installers under non-Windows systems without running the actual installer using wine. innoextract currently supports installers created by Inno Setup 1.2.10 to 5.6.0. +[Inno Setup](http://jrsoftware.org/isinfo.php) is a tool to create installers for Microsoft Windows applications. innoextract allows to extract such installers under non-Windows systems without running the actual installer using wine. innoextract currently supports installers created by Inno Setup 1.2.10 to 5.6.0. In addition to standard Inno Setup installers, innoextract also supports some modified Inno Setup variants including Martijn Laan's My Inno Setup Extensions 3.0.6.1 as well as GOG.com's Inno Setup-based game installers. innoextract is available under the ZLIB license - see the LICENSE file. -See the website for [Linux packages](http://constexpr.org/innoextract/#packages). +See the website for [Linux packages](https://constexpr.org/innoextract/#packages). ## Contact -[Website](http://constexpr.org/innoextract/) +[Website](https://constexpr.org/innoextract/) -Author: [Daniel Scharrer](http://constexpr.org/) +Author: [Daniel Scharrer](https://constexpr.org/) ## Dependencies -* **[Boost](http://www.boost.org/) 1.37** or newer -* **liblzma** from [xz-utils](http://tukaani.org/xz/) *(optional)* -* **iconv** (*optional*, either as part of the system libc, as is the case with [glibc](http://www.gnu.org/software/libc/) and [uClibc](http://www.uclibc.org/), or as a separate [libiconv](http://www.gnu.org/software/libiconv/)) +* **[Boost](https://www.boost.org/) 1.37** or newer +* **liblzma** from [xz-utils](https://tukaani.org/xz/) *(optional)* +* **iconv** (*optional*, either as part of the system libc, as is the case with [glibc](https://www.gnu.org/software/libc/) and [uClibc](https://uclibc.org/), or as a separate [libiconv](https://www.gnu.org/software/libiconv/)) For Boost you will need the headers as well as the `iostreams`, `filesystem`, `date_time`, `system` and `program_options` libraries. Older Boost version may work but are not actively supported. The boost `iostreams` library needs to be build with zlib and bzip2 support. While innoextract can be built without liblzma by manually setting `-DUSE_LZMA=OFF`, it is highly recommended and you won't be able to extract most installers created by newer Inno Setup versions without it. -To build innoextract you will also need **[CMake](http://cmake.org/) 2.8** and a working C++ compiler, as well as the development headers for liblzma and boost. +To build innoextract you will also need **[CMake](https://cmake.org/) 2.8** and a working C++ compiler, as well as the development headers for liblzma and boost. -See the Website for [operating system-specific instructions](http://constexpr.org/innoextract/install). +See the Website for [operating system-specific instructions](https://constexpr.org/innoextract/install). ## Compile and install @@ -115,10 +115,10 @@ Extracting Windows installer executables created by programs other than Inno Setup is out of the scope of this project. Some of these can be unpacked by the following programs: -* [cabextract](http://www.cabextract.org.uk/) +* [cabextract](https://cabextract.org.uk/) * [unshield](https://github.com/twogood/unshield) ## Disclaimer -This project is in no way associated with Inno Setup or [www.jrsoftware.org](http://www.jrsoftware.org/). +This project is in no way associated with Inno Setup or [jrsoftware.org](http://jrsoftware.org/). diff -Nru innoextract-1.9~dev+2019-09-22/src/setup/delete.cpp innoextract-1.9~dev+2020-01-12/src/setup/delete.cpp --- innoextract-1.9~dev+2019-09-22/src/setup/delete.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/setup/delete.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -43,7 +43,7 @@ (void)util::load(is); // uncompressed size of the entry } - is >> util::encoded_string(name, i.codepage); + is >> util::encoded_string(name, i.codepage, i.header.lead_bytes); load_condition_data(is, i); diff -Nru innoextract-1.9~dev+2019-09-22/src/setup/directory.cpp innoextract-1.9~dev+2020-01-12/src/setup/directory.cpp --- innoextract-1.9~dev+2019-09-22/src/setup/directory.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/setup/directory.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -52,7 +52,7 @@ (void)util::load(is); // uncompressed size of the entry } - is >> util::encoded_string(name, i.codepage); + is >> util::encoded_string(name, i.codepage, i.header.lead_bytes); load_condition_data(is, i); diff -Nru innoextract-1.9~dev+2019-09-22/src/setup/file.cpp innoextract-1.9~dev+2020-01-12/src/setup/file.cpp --- innoextract-1.9~dev+2019-09-22/src/setup/file.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/setup/file.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -81,11 +81,11 @@ (void)util::load(is); // uncompressed size of the entry } - is >> util::encoded_string(source, i.codepage); - is >> util::encoded_string(destination, i.codepage); - is >> util::encoded_string(install_font_name, i.codepage); + is >> util::encoded_string(source, i.codepage, i.header.lead_bytes); + is >> util::encoded_string(destination, i.codepage, i.header.lead_bytes); + is >> util::encoded_string(install_font_name, i.codepage, i.header.lead_bytes); if(i.version >= INNO_VERSION(5, 2, 5)) { - is >> util::encoded_string(strong_assembly_name, i.codepage); + is >> util::encoded_string(strong_assembly_name, i.codepage, i.header.lead_bytes); } else { strong_assembly_name.clear(); } diff -Nru innoextract-1.9~dev+2019-09-22/src/setup/filename.cpp innoextract-1.9~dev+2020-01-12/src/setup/filename.cpp --- innoextract-1.9~dev+2019-09-22/src/setup/filename.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/setup/filename.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -37,7 +37,7 @@ struct is_unsafe_path_char { bool operator()(char c) { - if(c < 32) { + if(static_cast(c) < 32) { return true; } switch(c) { @@ -81,7 +81,8 @@ } ptrdiff_t obegin = ptrdiff_t(result.size()); result.append(begin, pos); - result.erase(std::remove_if(result.begin() + obegin, result.end(), is_unsafe_path_char()), result.end()); + std::replace_copy_if(result.begin() + obegin, result.end(), result.begin() + obegin, + is_unsafe_path_char(), '$'); begin = pos; if(pos == end) { diff -Nru innoextract-1.9~dev+2019-09-22/src/setup/header.cpp innoextract-1.9~dev+2020-01-12/src/setup/header.cpp --- innoextract-1.9~dev+2019-09-22/src/setup/header.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/setup/header.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -715,24 +715,24 @@ util::to_utf8(app_support_url, codepage); util::to_utf8(app_updates_url, codepage); util::to_utf8(app_version, codepage); - util::to_utf8(default_dir_name, codepage); + util::to_utf8(default_dir_name, codepage, &lead_bytes); util::to_utf8(default_group_name, codepage); - util::to_utf8(base_filename, codepage); - util::to_utf8(uninstall_files_dir, codepage); - util::to_utf8(uninstall_name, codepage); - util::to_utf8(uninstall_icon, codepage); - util::to_utf8(app_mutex, codepage); + util::to_utf8(base_filename, codepage, &lead_bytes); + util::to_utf8(uninstall_files_dir, codepage, &lead_bytes); + util::to_utf8(uninstall_name, codepage, &lead_bytes); + util::to_utf8(uninstall_icon, codepage, &lead_bytes); + util::to_utf8(app_mutex, codepage, &lead_bytes); util::to_utf8(default_user_name, codepage); util::to_utf8(default_user_organisation, codepage); util::to_utf8(default_serial, codepage); - util::to_utf8(app_readme_file, codepage); + util::to_utf8(app_readme_file, codepage, &lead_bytes); util::to_utf8(app_contact, codepage); util::to_utf8(app_comments, codepage); - util::to_utf8(app_modify_path, codepage); - util::to_utf8(create_uninstall_registry_key, codepage); + util::to_utf8(app_modify_path, codepage, &lead_bytes); + util::to_utf8(create_uninstall_registry_key, codepage, &lead_bytes); util::to_utf8(uninstallable, codepage); util::to_utf8(close_applications_filter, codepage); - util::to_utf8(setup_mutex, codepage); + util::to_utf8(setup_mutex, codepage, &lead_bytes); util::to_utf8(changes_environment, codepage); util::to_utf8(changes_associations, codepage); diff -Nru innoextract-1.9~dev+2019-09-22/src/setup/icon.cpp innoextract-1.9~dev+2020-01-12/src/setup/icon.cpp --- innoextract-1.9~dev+2019-09-22/src/setup/icon.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/setup/icon.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -43,11 +43,11 @@ (void)util::load(is); // uncompressed size of the entry } - is >> util::encoded_string(name, i.codepage); - is >> util::encoded_string(filename, i.codepage); - is >> util::encoded_string(parameters, i.codepage); - is >> util::encoded_string(working_dir, i.codepage); - is >> util::encoded_string(icon_file, i.codepage); + is >> util::encoded_string(name, i.codepage, i.header.lead_bytes); + is >> util::encoded_string(filename, i.codepage, i.header.lead_bytes); + is >> util::encoded_string(parameters, i.codepage, i.header.lead_bytes); + is >> util::encoded_string(working_dir, i.codepage, i.header.lead_bytes); + is >> util::encoded_string(icon_file, i.codepage, i.header.lead_bytes); is >> util::encoded_string(comment, i.codepage); load_condition_data(is, i); diff -Nru innoextract-1.9~dev+2019-09-22/src/setup/ini.cpp innoextract-1.9~dev+2020-01-12/src/setup/ini.cpp --- innoextract-1.9~dev+2019-09-22/src/setup/ini.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/setup/ini.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -47,13 +47,13 @@ (void)util::load(is); // uncompressed size of the entry } - is >> util::encoded_string(inifile, i.codepage); + is >> util::encoded_string(inifile, i.codepage, i.header.lead_bytes); if(inifile.empty()) { inifile = "{windows}/WIN.INI"; } - is >> util::encoded_string(section, i.codepage); + is >> util::encoded_string(section, i.codepage, i.header.lead_bytes); is >> util::encoded_string(key, i.codepage); - is >> util::encoded_string(value, i.codepage); + is >> util::encoded_string(value, i.codepage, i.header.lead_bytes); load_condition_data(is, i); diff -Nru innoextract-1.9~dev+2019-09-22/src/setup/registry.cpp innoextract-1.9~dev+2020-01-12/src/setup/registry.cpp --- innoextract-1.9~dev+2019-09-22/src/setup/registry.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/setup/registry.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -65,7 +65,7 @@ (void)util::load(is); // uncompressed size of the entry } - is >> util::encoded_string(key, i.codepage); + is >> util::encoded_string(key, i.codepage, i.header.lead_bytes); if(i.version.bits() != 16) { is >> util::encoded_string(name, i.codepage); } else { diff -Nru innoextract-1.9~dev+2019-09-22/src/setup/run.cpp innoextract-1.9~dev+2020-01-12/src/setup/run.cpp --- innoextract-1.9~dev+2019-09-22/src/setup/run.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/setup/run.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -45,9 +45,9 @@ (void)util::load(is); // uncompressed size of the entry } - is >> util::encoded_string(name, i.codepage); - is >> util::encoded_string(parameters, i.codepage); - is >> util::encoded_string(working_dir, i.codepage); + is >> util::encoded_string(name, i.codepage, i.header.lead_bytes); + is >> util::encoded_string(parameters, i.codepage, i.header.lead_bytes); + is >> util::encoded_string(working_dir, i.codepage, i.header.lead_bytes); if(i.version >= INNO_VERSION(1, 3, 9)) { is >> util::encoded_string(run_once_id, i.codepage); } else { diff -Nru innoextract-1.9~dev+2019-09-22/src/util/encoding.cpp innoextract-1.9~dev+2020-01-12/src/util/encoding.cpp --- innoextract-1.9~dev+2019-09-22/src/util/encoding.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/util/encoding.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -752,7 +752,8 @@ #endif // INNOEXTRACT_HAVE_WIN32_CONV -void to_utf8(const std::string & from, std::string & to, codepage_id codepage) { +void to_utf8(const std::string & from, std::string & to, codepage_id codepage, + const std::bitset<256> * lead_bytes) { switch(codepage) { case cp_utf16le: utf16le_to_wtf8(from, to); return; @@ -761,6 +762,30 @@ default: break; } + if(lead_bytes) { + std::string buffer; + for(size_t start = 0; start < from.length();) { + size_t end = start; + while(end < from.length()) { + if(lead_bytes->test(static_cast(from[end]))) { + end = std::min(from.length(), end + 2); + } else if(from[end] != 0x5C) { + end++; + } else { + break; + } + } + buffer = from.substr(start, end - start); + util::to_utf8(buffer, codepage, NULL); + to.append(buffer); + if(end < from.length()) { + to.push_back('\\'); + } + start = end + 1; + } + return; + } + #if INNOEXTRACT_HAVE_ICONV if(to_utf8_iconv(from, to, codepage)) { return; @@ -779,7 +804,7 @@ } // anonymous namespace -void to_utf8(std::string & data, codepage_id codepage) { +void to_utf8(std::string & data, codepage_id codepage, const std::bitset<256> * lead_bytes) { if(data.empty() || is_utf8(data, codepage)) { // Already UTF-8 @@ -787,7 +812,7 @@ } std::string buffer; - to_utf8(data, buffer, codepage); + to_utf8(data, buffer, codepage, lead_bytes); std::swap(data, buffer); } diff -Nru innoextract-1.9~dev+2019-09-22/src/util/encoding.hpp innoextract-1.9~dev+2020-01-12/src/util/encoding.hpp --- innoextract-1.9~dev+2019-09-22/src/util/encoding.hpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/util/encoding.hpp 2020-01-12 20:23:41.000000000 +0000 @@ -26,6 +26,7 @@ #ifndef INNOEXTRACT_UTIL_ENCODING_HPP #define INNOEXTRACT_UTIL_ENCODING_HPP +#include #include #include @@ -157,12 +158,14 @@ /*! * Convert a string in place to UTF-8 from a specified encoding. - * \param data The input string to convert. - * \param codepage The Windows codepage number for the input string encoding. + * \param data The input string to convert. + * \param codepage The Windows codepage number for the input string encoding. + * \param lead_bytes Preserve 0x5C path separators. * * \note This function is not thread-safe. */ -void to_utf8(std::string & data, codepage_id codepage = cp_windows1252); +void to_utf8(std::string & data, codepage_id codepage = cp_windows1252, + const std::bitset<256> * lead_bytes = NULL); /*! * Convert a string from UTF-8 to a specified encoding. diff -Nru innoextract-1.9~dev+2019-09-22/src/util/load.cpp innoextract-1.9~dev+2020-01-12/src/util/load.cpp --- innoextract-1.9~dev+2019-09-22/src/util/load.cpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/util/load.cpp 2020-01-12 20:23:41.000000000 +0000 @@ -54,9 +54,10 @@ discard(is, length); } -void encoded_string::load(std::istream & is, std::string & target, codepage_id codepage) { +void encoded_string::load(std::istream & is, std::string & target, codepage_id codepage, + const std::bitset<256> * lead_bytes) { binary_string::load(is, target); - to_utf8(target, codepage); + to_utf8(target, codepage, lead_bytes); } unsigned to_unsigned(const char * chars, size_t count) { diff -Nru innoextract-1.9~dev+2019-09-22/src/util/load.hpp innoextract-1.9~dev+2020-01-12/src/util/load.hpp --- innoextract-1.9~dev+2019-09-22/src/util/load.hpp 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/src/util/load.hpp 2020-01-12 20:23:41.000000000 +0000 @@ -26,6 +26,7 @@ #ifndef INNOEXTRACT_UTIL_LOAD_HPP #define INNOEXTRACT_UTIL_LOAD_HPP +#include #include #include #include @@ -89,34 +90,46 @@ std::string & data; codepage_id codepage; + const std::bitset<256> * lead_byte_set; /*! - * \param target The std::string object to receive the loaded UTF-8 string. - * \param cp The Windows codepage for the encoding of the stored string. + * \param target The std::string object to receive the loaded UTF-8 string. + * \param cp The Windows codepage for the encoding of the stored string. */ - encoded_string(std::string & target, codepage_id cp) : data(target), codepage(cp) { } + encoded_string(std::string & target, codepage_id cp) + : data(target), codepage(cp), lead_byte_set(NULL) { } + + /*! + * \param target The std::string object to receive the loaded UTF-8 string. + * \param cp The Windows codepage for the encoding of the stored string. + * \param lead_bytes Preserve 0x5C path separators. + */ + encoded_string(std::string & target, codepage_id cp, const std::bitset<256> & lead_bytes) + : data(target), codepage(cp), lead_byte_set(&lead_bytes) { } /*! * Load and convert a length-prefixed string * * \note This function is not thread-safe. */ - static void load(std::istream & is, std::string & target, codepage_id codepage); + static void load(std::istream & is, std::string & target, codepage_id codepage, + const std::bitset<256> * lead_bytes = NULL); /*! * Load and convert a length-prefixed string * * \note This function is not thread-safe. */ - static std::string load(std::istream & is, codepage_id codepage) { + static std::string load(std::istream & is, codepage_id codepage, + const std::bitset<256> * lead_bytes = NULL) { std::string target; - load(is, target, codepage); + load(is, target, codepage, lead_bytes); return target; } }; inline std::istream & operator>>(std::istream & is, const encoded_string & str) { - encoded_string::load(is, str.data, str.codepage); + encoded_string::load(is, str.data, str.codepage, str.lead_byte_set); return is; } diff -Nru innoextract-1.9~dev+2019-09-22/VERSION innoextract-1.9~dev+2020-01-12/VERSION --- innoextract-1.9~dev+2019-09-22/VERSION 2019-09-22 23:13:45.000000000 +0000 +++ innoextract-1.9~dev+2020-01-12/VERSION 2020-01-12 20:23:41.000000000 +0000 @@ -1,7 +1,7 @@ -innoextract 1.9-dev-2019-09-22 + b398a3f +innoextract 1.9-dev-2020-01-12 + 48513a1 Known working Inno Setup versions: -Inno Setup 1.2.10 to 6.0.2 +Inno Setup 1.2.10 to 6.0.3 Bug tracker: -http://innoextract.constexpr.org/issues +https://innoextract.constexpr.org/issues