[setup - the official Cygwin setup program] branch master, updated. release_2.899
jturney-9JcytcrH/[email protected]
| Newsgroups | gmane.os.cygwin.cvs.apps |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=e435a212a6e85169616a67c08eab1d9a387c6cfc commit e435a212a6e85169616a67c08eab1d9a387c6cfc Author: Jon Turney <[email protected]> Date: Wed Jan 1 14:38:45 2020 +0000 Fix cases where incorrect action is stored by set_action() set_action() with action = Install_action and desired = empty version when curr = empty version is equivalent to action = NoChange_Action. (This can occur if we are selecting a category for install on the command line, and that category happens to include a package which only has a test version, but no current version) (For completeness, also address the case of action = Install_action, desired = empty_version, where curr = some version is equivalent to action = Uninstall_action) Diff: --- package_meta.cc | 49 +++++++++++++++++++++++++------------------------ 1 files changed, 25 insertions(+), 24 deletions(-) diff --git a/package_meta.cc b/package_meta.cc index 940f69a..1f6ab16 100644 --- a/package_meta.cc +++ b/package_meta.cc @@ -549,30 +549,31 @@ packagemeta::set_action (_actions action, packageversion const &default_version, else if (action == Install_action) { desired = default_version; - if (desired) - { - if (desired != installed) - if (desired.accessible ()) - { - /* Memorize the fact that the user picked to install this package at least once. */ - if (useraction) - user_picked = true; - - pick (true); - srcpick (false); - } - else - { - pick (false); - srcpick (true); - } - else - { - action = NoChange_action; - pick (false); - srcpick (false); - } - } + if (desired != installed) + if (desired.accessible ()) + { + /* Memorize the fact that the user picked to install this package at least once. */ + if (useraction) + user_picked = true; + + pick (true); + srcpick (false); + + /* Install no version is Uninstall */ + if (!desired) + action = Uninstall_action; + } + else + { + pick (false); + srcpick (true); + } + else + { + action = NoChange_action; + pick (false); + srcpick (false); + } } else if (action == Reinstall_action) {