summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <kalnischkies@gmail.com>2012-04-20 10:13:17 +0200
committerDavid Kalnischkies <kalnischkies@gmail.com>2012-04-20 10:13:17 +0200
commite6a12579e9e5d5735eda450cf2bb3986d828ab65 (patch)
treed29237d8d44af0abe231dd0f76e3f4a04a471c32
parent5149632eb5af0831a8728e8bb5d5c483d6e3f147 (diff)
downloadapt-e6a12579e9e5d5735eda450cf2bb3986d828ab65.tar.gz
* apt-pkg/cacheset.cc:
- actually return to the fallback modifier if we have detected we should for packagenames which look like modifiers (Closes: #669591)
-rw-r--r--apt-pkg/cacheset.cc7
-rw-r--r--debian/changelog5
-rwxr-xr-xtest/integration/test-bug-593360-modifiers-in-names5
3 files changed, 14 insertions, 3 deletions
diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc
index b892ab4bf..e2dbe0e57 100644
--- a/apt-pkg/cacheset.cc
+++ b/apt-pkg/cacheset.cc
@@ -217,6 +217,7 @@ bool PackageContainerInterface::FromModifierCommandLine(unsigned short &modID, P
pkgCacheFile &Cache, const char * cmdline,
std::list<Modifier> const &mods, CacheSetHelper &helper) {
std::string str = cmdline;
+ unsigned short fallback = modID;
bool modifierPresent = false;
for (std::list<Modifier>::const_iterator mod = mods.begin();
mod != mods.end(); ++mod) {
@@ -243,6 +244,7 @@ bool PackageContainerInterface::FromModifierCommandLine(unsigned short &modID, P
helper.showErrors(errors);
if (Pkg.end() == false) {
pci->insert(Pkg);
+ modID = fallback;
return true;
}
}
@@ -281,13 +283,14 @@ bool VersionContainerInterface::FromModifierCommandLine(unsigned short &modID,
modifierPresent = true;
break;
}
-
if (modifierPresent == true) {
bool const errors = helper.showErrors(false);
bool const found = VersionContainerInterface::FromString(vci, Cache, cmdline, select, helper, true);
helper.showErrors(errors);
- if (found == true)
+ if (found == true) {
+ modID = fallback;
return true;
+ }
}
return FromString(vci, Cache, str, select, helper);
}
diff --git a/debian/changelog b/debian/changelog
index 4d4d6a70e..18242e081 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -12,6 +12,9 @@ apt (0.9.2) unstable; urgency=low
- do not use the input data directly but memcpy it instead as
it could be unaligned as in the http-transport which causes
a sigbus error on sparc (Closes: #669061)
+ * apt-pkg/cacheset.cc:
+ - actually return to the fallback modifier if we have detected we
+ should for packagenames which look like modifiers (Closes: #669591)
[ Malcolm Scott ]
@@ -19,7 +22,7 @@ apt (0.9.2) unstable; urgency=low
- iterate over all pre-depends or-group member instead of looping
endlessly over the first member in SmartUnpack (LP: #985852)
- -- David Kalnischkies <kalnischkies@gmail.com> Fri, 20 Apr 2012 09:52:21 +0200
+ -- David Kalnischkies <kalnischkies@gmail.com> Fri, 20 Apr 2012 10:11:24 +0200
apt (0.9.1) unstable; urgency=low
diff --git a/test/integration/test-bug-593360-modifiers-in-names b/test/integration/test-bug-593360-modifiers-in-names
index 83a3cfabf..74826cbdb 100755
--- a/test/integration/test-bug-593360-modifiers-in-names
+++ b/test/integration/test-bug-593360-modifiers-in-names
@@ -15,6 +15,11 @@ The following NEW packages will be installed:
Inst g++ (4:4.4.5-1 localhost [i386])
Conf g++ (4:4.4.5-1 localhost [i386])' aptget install g++ -s
+testequal "Reading package lists...
+Building dependency tree...
+Package 'g++' is not installed, so not removed
+0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove g++ -s
+
testequal 'Reading package lists...
Building dependency tree...
The following NEW packages will be installed: