X-Git-Url: https://git.saurik.com/apt.git/blobdiff_plain/3184b4cf2e8e2009ce62b8f66c666ae7da67e378..0205540433440a9ff4ad4ea4cce44c700a4b401c:/apt-pkg/contrib/configuration.cc diff --git a/apt-pkg/contrib/configuration.cc b/apt-pkg/contrib/configuration.cc index 81cc87d15..cc7093fe2 100644 --- a/apt-pkg/contrib/configuration.cc +++ b/apt-pkg/contrib/configuration.cc @@ -857,19 +857,27 @@ Configuration::MatchAgainstConfig::MatchAgainstConfig(char const * Config) { 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::const_iterator p = patterns.begin(); p != patterns.end(); ++p) { + if (*p == NULL) continue; regfree(*p); delete *p; } @@ -880,7 +888,7 @@ bool Configuration::MatchAgainstConfig::Match(char const * str) const { for(std::vector::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;