{
regfree(p);
delete p;
+ clearPatterns();
_error->Warning("Regex compilation error for '%s' in configuration option '%s'",
s->c_str(), Config);
+ return;
}
- }
-
+ }
+ if (strings.size() == 0)
+ patterns.push_back(NULL);
}
/*}}}*/
// MatchAgainstConfig Destructor /*{{{*/
Configuration::MatchAgainstConfig::~MatchAgainstConfig()
+{
+ clearPatterns();
+}
+void Configuration::MatchAgainstConfig::clearPatterns()
{
for(std::vector<regex_t *>::const_iterator p = patterns.begin();
p != patterns.end(); ++p)
{
+ if (*p == NULL) continue;
regfree(*p);
delete *p;
}
{
for(std::vector<regex_t *>::const_iterator p = patterns.begin();
p != patterns.end(); ++p)
- if (regexec(*p, str, 0, 0, 0) == 0)
+ if (*p != NULL && regexec(*p, str, 0, 0, 0) == 0)
return true;
return false;
class MatchAgainstConfig
{
std::vector<regex_t *> patterns;
+ void clearPatterns();
public:
MatchAgainstConfig(char const * Config);
class DefaultRootSetFunc : public InRootSetFunc, public Configuration::MatchAgainstConfig
{
public:
- DefaultRootSetFunc() : Configuration::MatchAgainstConfig("APT::NeverRemove") {};
+ DefaultRootSetFunc() : Configuration::MatchAgainstConfig("APT::NeverAutoRemove") {};
virtual ~DefaultRootSetFunc() {};
bool InRootSet(const pkgCache::PkgIterator &pkg) { return pkg.end() == true && Match(pkg.Name()); };
pass this purge forward to the non-pseudo package for pseudos
* apt-pkg/contrib/fileutl.cc:
- apply SilentlyIgnore also on files without an extension
+ * apt-pkg/contrib/configuration.cc:
+ - fix autoremove by using correct config-option name and
+ don't make faulty assumptions in error handling (Closes: #594689)
- -- David Kalnischkies <kalnischkies@gmail.com> Sat, 28 Aug 2010 17:53:00 +0200
+ -- David Kalnischkies <kalnischkies@gmail.com> Sat, 28 Aug 2010 22:23:20 +0200
apt (0.8.0) unstable; urgency=low
--- /dev/null
+#!/bin/sh
+set -e
+
+local TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture "i386"
+
+buildsimplenativepackage "unrelated" "all" "1" "unstable"
+buildsimplenativepackage "po-debconf" "all" "1.0.16" "unstable"
+buildsimplenativepackage "debhelper" "all" "8.0.0" "unstable" "Depends: po-debconf"
+setupaptarchive
+
+aptget install unrelated debhelper -qq 2>&1 > /dev/null
+
+testfileequal "rootdir/var/lib/apt/extended_states" "Package: po-debconf
+Architecture: i386
+Auto-Installed: 1
+"
+aptget remove debhelper -y -qq 2>&1 > /dev/null
+aptget autoremove -y -qq 2>&1 > /dev/null
+
+testfileequal "rootdir/var/lib/apt/extended_states" ""
+
+sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d'
+testfileequal "rootdir/var/log/apt/history.log" '
+Install: unrelated:i386 (1), debhelper:i386 (8.0.0), po-debconf:i386 (1.0.16, automatic)
+
+Remove: debhelper:i386 (8.0.0)
+
+Remove: po-debconf:i386 (1.0.16)'