diff --git a/CHANGELOG b/CHANGELOG index 7b97224..8ef2e2e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -14,6 +14,7 @@ innoextract 1.8 (WIP) - Fixed extracting files from slices larger than 2 GiB with 32-bit builds - Fixed output path for files with absolute paths (canonicalization now strips all unsafe characters) - Fixed output directory being created even when not extracting files + - Fixed a hang when using the --language option - Changed header parsing to select the first version without warnings and failing that the first without errors innoextract 1.7 (2018-06-12) diff --git a/src/setup/expression.cpp b/src/setup/expression.cpp index 4bc205d..b886cc1 100644 --- a/src/setup/expression.cpp +++ b/src/setup/expression.cpp @@ -125,7 +125,7 @@ struct evaluator { bool result = eval_factor(lazy); while(token == op_and) { next(); - result = result && eval_factor(lazy || !result); + result = eval_factor(lazy || !result) && result; } return result; } @@ -136,7 +136,7 @@ struct evaluator { if(token == op_or) { next(); } - result = result || eval_term(lazy || result); + result = eval_term(lazy || result) || result; } return result; } diff --git a/src/setup/expression.hpp b/src/setup/expression.hpp index fdf7258..8d2aae7 100644 --- a/src/setup/expression.hpp +++ b/src/setup/expression.hpp @@ -30,6 +30,9 @@ namespace setup { +/* + * Determine if the given expression is satisfied with (only) the given test variable set to true + */ bool expression_match(const std::string & test, const std::string & expression); bool is_simple_expression(const std::string & expression);