summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2020-02-26 18:42:13 +0000
committerJulian Andres Klode <jak@debian.org>2020-02-26 18:42:13 +0000
commitc38e0047d95305e5984e822f670055cde6aa5f6a (patch)
tree71eb37d2df34eebc91cffbb46a879bd21a12b8e7
parenta096b580694cb36f29cdbce8f1db797a08e36709 (diff)
parent62ca61ff4ac794f9c42335d8286343149d4313d1 (diff)
Merge branch 'pu/misc' into 'master'
Pu/misc See merge request apt-team/apt!107
-rw-r--r--apt-pkg/cachefilter-patterns.h2
-rw-r--r--apt-pkg/cacheset.cc4
-rw-r--r--apt-pkg/cacheset.h8
-rw-r--r--apt-pkg/contrib/strutl.cc4
-rw-r--r--apt-pkg/edsp/edspsystem.h2
-rw-r--r--apt-pkg/metaindex.cc6
-rw-r--r--apt-pkg/tagfile.cc5
-rw-r--r--debian/libapt-pkg6.0.symbols87
-rw-r--r--test/libapt/tagfile_test.cc58
9 files changed, 117 insertions, 59 deletions
diff --git a/apt-pkg/cachefilter-patterns.h b/apt-pkg/cachefilter-patterns.h
index 2071c80b3..0c0dafa15 100644
--- a/apt-pkg/cachefilter-patterns.h
+++ b/apt-pkg/cachefilter-patterns.h
@@ -261,7 +261,7 @@ struct APT_HIDDEN PackageIsVirtual : public PackageMatcher
struct APT_HIDDEN VersionAnyMatcher : public Matcher
{
- bool operator()(pkgCache::GrpIterator const &Grp) override { return false; }
+ bool operator()(pkgCache::GrpIterator const &) override { return false; }
bool operator()(pkgCache::VerIterator const &Ver) override = 0;
bool operator()(pkgCache::PkgIterator const &Pkg) override
{
diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc
index ae1d5ee3e..288180f16 100644
--- a/apt-pkg/cacheset.cc
+++ b/apt-pkg/cacheset.cc
@@ -915,6 +915,7 @@ CacheSetHelper::CacheSetHelper(bool const ShowError, GlobalError::MsgType ErrorT
CacheSetHelper::~CacheSetHelper() {}
PackageContainerInterface::PackageContainerInterface() : ConstructedBy(CacheSetHelper::UNKNOWN), d(NULL) {}
+PackageContainerInterface::PackageContainerInterface(PackageContainerInterface const &by) : PackageContainerInterface() { *this = by; }
PackageContainerInterface::PackageContainerInterface(CacheSetHelper::PkgSelector const by) : ConstructedBy(by), d(NULL) {}
PackageContainerInterface& PackageContainerInterface::operator=(PackageContainerInterface const &other) {
if (this != &other)
@@ -928,6 +929,9 @@ PackageUniverse::PackageUniverse(pkgCacheFile * const Owner) : _cont(Owner->GetP
PackageUniverse::~PackageUniverse() {}
VersionContainerInterface::VersionContainerInterface() : d(NULL) {}
+VersionContainerInterface::VersionContainerInterface(VersionContainerInterface const &other) : VersionContainerInterface() {
+ *this = other;
+};
VersionContainerInterface& VersionContainerInterface::operator=(VersionContainerInterface const &) {
return *this;
}
diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h
index 6023b861d..bfb9e0abf 100644
--- a/apt-pkg/cacheset.h
+++ b/apt-pkg/cacheset.h
@@ -201,7 +201,7 @@ template<typename Interface, typename Master, typename iterator_type, typename c
protected:
container_iterator _iter;
public:
- explicit Container_iterator_base(container_iterator i) : _iter(i) {}
+ explicit Container_iterator_base(container_iterator const &i) : _iter(i) {}
inline container_value operator*(void) const { return static_cast<iterator_type const*>(this)->getType(); };
operator container_iterator(void) const { return _iter; }
inline iterator_type& operator++() { ++_iter; return static_cast<iterator_type&>(*this); }
@@ -241,12 +241,10 @@ template<class Interface, class Container, class Master> class Container_iterato
typedef Container_iterator<Interface, Container, Master> iterator_type;
typedef typename Container::iterator container_iterator;
public:
- explicit Container_iterator(container_iterator i) :
+ explicit Container_iterator(container_iterator const &i) :
Container_iterator_base<Interface, Master, iterator_type, container_iterator, typename Container::value_type>(i) {}
operator typename Master::const_iterator() { return typename Master::const_iterator(this->_iter); }
- inline iterator_type& operator=(iterator_type const &i) { this->_iter = i._iter; return static_cast<iterator_type&>(*this); }
- inline iterator_type& operator=(container_iterator const &i) { this->_iter = i; return static_cast<iterator_type&>(*this); }
inline typename Container::iterator::reference operator*(void) const { return *this->_iter; }
inline typename Container::value_type getType(void) const { return *this->_iter; }
@@ -325,6 +323,7 @@ public:
CacheSetHelper::PkgSelector getConstructor() const { return ConstructedBy; }
PackageContainerInterface();
explicit PackageContainerInterface(CacheSetHelper::PkgSelector const by);
+ PackageContainerInterface(PackageContainerInterface const &by);
PackageContainerInterface& operator=(PackageContainerInterface const &other);
virtual ~PackageContainerInterface();
@@ -762,6 +761,7 @@ public:
CacheSetHelper &helper);
VersionContainerInterface();
+ VersionContainerInterface(VersionContainerInterface const &other);
VersionContainerInterface& operator=(VersionContainerInterface const &other);
virtual ~VersionContainerInterface();
private:
diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc
index 70befdc48..972472986 100644
--- a/apt-pkg/contrib/strutl.cc
+++ b/apt-pkg/contrib/strutl.cc
@@ -1044,10 +1044,6 @@ static time_t timegm(struct tm *t)
we allow them here to to be able to reuse the method. Either way, a date
must be in UTC or parsing will fail. Previous implementations of this
method used to ignore the timezone and assume always UTC. */
-bool RFC1123StrToTime(const char* const str,time_t &time)
-{
- return RFC1123StrToTime(std::string(str), time);
-}
bool RFC1123StrToTime(std::string const &str,time_t &time)
{
unsigned short day = 0;
diff --git a/apt-pkg/edsp/edspsystem.h b/apt-pkg/edsp/edspsystem.h
index 9e34345cd..33f06c4d5 100644
--- a/apt-pkg/edsp/edspsystem.h
+++ b/apt-pkg/edsp/edspsystem.h
@@ -42,7 +42,7 @@ public:
std::vector<std::string> ArchitecturesSupported() const override { return {}; };
bool LockInner() override { return _error->Error("LockInner is not implemented"); };
- bool UnLockInner(bool NoErrors=false) override { return _error->Error("UnLockInner is not implemented"); };
+ bool UnLockInner(bool) override { return _error->Error("UnLockInner is not implemented"); };
bool IsLocked() override { return true; };
explicit edspLikeSystem(char const * const Label);
diff --git a/apt-pkg/metaindex.cc b/apt-pkg/metaindex.cc
index 06db06f83..fc03f3db0 100644
--- a/apt-pkg/metaindex.cc
+++ b/apt-pkg/metaindex.cc
@@ -131,17 +131,17 @@ void metaIndex::swapLoad(metaIndex * const OldMetaIndex) /*{{{*/
}
/*}}}*/
-bool metaIndex::IsArchitectureSupported(std::string const &arch) const /*{{{*/
+bool metaIndex::IsArchitectureSupported(std::string const &) const /*{{{*/
{
return true;
}
/*}}}*/
-bool metaIndex::IsArchitectureAllSupportedFor(IndexTarget const &target) const/*{{{*/
+bool metaIndex::IsArchitectureAllSupportedFor(IndexTarget const &) const/*{{{*/
{
return true;
}
/*}}}*/
-bool metaIndex::HasSupportForComponent(std::string const &component) const/*{{{*/
+bool metaIndex::HasSupportForComponent(std::string const &) const/*{{{*/
{
return true;
}
diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc
index 0f0d8c9a7..52000c6b9 100644
--- a/apt-pkg/tagfile.cc
+++ b/apt-pkg/tagfile.cc
@@ -513,7 +513,6 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength, bool const R
return false;
pkgTagSectionPrivate::TagData lastTagData(0);
- lastTagData.EndTag = 0;
Key lastTagKey = Key::Unknown;
unsigned int lastTagHash = 0;
while (Stop < End)
@@ -529,7 +528,7 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength, bool const R
if (isspace_ascii(Stop[0]) == 0)
{
// store the last found tag
- if (lastTagData.EndTag != 0)
+ if (lastTagData.StartValue != 0)
{
if (lastTagKey != Key::Unknown) {
AlphaIndexes[static_cast<size_t>(lastTagKey)] = TagCount;
@@ -579,7 +578,7 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength, bool const R
// Double newline marks the end of the record
if (Stop+1 < End && Stop[1] == '\n')
{
- if (lastTagData.EndTag != 0)
+ if (lastTagData.StartValue != 0)
{
if (lastTagKey != Key::Unknown) {
AlphaIndexes[static_cast<size_t>(lastTagKey)] = TagCount;
diff --git a/debian/libapt-pkg6.0.symbols b/debian/libapt-pkg6.0.symbols
index 4ae0dca2d..a9ffaf882 100644
--- a/debian/libapt-pkg6.0.symbols
+++ b/debian/libapt-pkg6.0.symbols
@@ -197,7 +197,7 @@ libapt-pkg.so.6.0 libapt-pkg6.0 #MINVER#
(c++)"pkgSimulate::Remove(pkgCache::PkgIterator, bool)@APTPKG_6.0" 0.8.0
(c++)"pkgSimulate::Install(pkgCache::PkgIterator, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 0.8.0
(c++)"pkgSimulate::Configure(pkgCache::PkgIterator)@APTPKG_6.0" 0.8.0
- (c++)"pkgSimulate::Go(APT::Progress::PackageManager*)@APTPKG_6.0" 1.9.10
+ (c++)"pkgSimulate::Go(APT::Progress::PackageManager*)@APTPKG_6.0" 1.9.11~
(c++)"pkgSimulate::pkgSimulate(pkgDepCache*)@APTPKG_6.0" 0.8.0
(c++)"pkgSimulate::~pkgSimulate()@APTPKG_6.0" 0.8.0
(c++)"pkgAcqMethod::FetchResult::TakeHashes(Hashes&)@APTPKG_6.0" 0.8.0
@@ -627,7 +627,6 @@ libapt-pkg.so.6.0 libapt-pkg6.0 #MINVER#
### architecture specific: time_t
(arch=!x32|c++)"FTPMDTMStrToTime(char const*, long&)@APTPKG_6.0" 0.8.0
(arch=x32|c++)"FTPMDTMStrToTime(char const*, long long&)@APTPKG_6.0" 0.8.0
- (arch=!x32|c++)"RFC1123StrToTime(char const*, long&)@APTPKG_6.0" 0.8.0
(arch=x32|c++)"RFC1123StrToTime(char const*, long long&)@APTPKG_6.0" 0.8.0
(arch=!x32|c++)"RFC1123StrToTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long&)@APTPKG_6.0" 1.9.0
(arch=x32|c++)"RFC1123StrToTime(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, long long&)@APTPKG_6.0" 1.9.0
@@ -1019,6 +1018,7 @@ libapt-pkg.so.6.0 libapt-pkg6.0 #MINVER#
(c++)"APT::Configuration::getLanguages[abi:cxx11](bool const&, bool const&, char const**)@APTPKG_6.0" 1.1~exp9
(c++)"APT::PackageContainerInterface::operator=(APT::PackageContainerInterface const&)@APTPKG_6.0" 1.1~exp9
(c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::CacheSetHelper::PkgSelector)@APTPKG_6.0" 1.1~exp9
+ (c++)"APT::PackageContainerInterface::PackageContainerInterface(APT::PackageContainerInterface const&)@APTPKG_6.0" 1.9.11~
(c++)"APT::PackageContainerInterface::~PackageContainerInterface()@APTPKG_6.0" 1.1~exp9
(c++)"APT::PackageContainerInterface::PackageContainerInterface()@APTPKG_6.0" 1.1~exp9
(c++)"APT::PackageUniverse::~PackageUniverse()@APTPKG_6.0" 1.1~exp9
@@ -1029,6 +1029,7 @@ libapt-pkg.so.6.0 libapt-pkg6.0 #MINVER#
(c++)"APT::VersionContainerInterface::operator=(APT::VersionContainerInterface const&)@APTPKG_6.0" 1.1~exp9
(c++)"APT::VersionContainerInterface::~VersionContainerInterface()@APTPKG_6.0" 1.1~exp9
(c++)"APT::VersionContainerInterface::VersionContainerInterface()@APTPKG_6.0" 1.1~exp9
+ (c++)"APT::VersionContainerInterface::VersionContainerInterface(APT::VersionContainerInterface const&)@APTPKG_6.0" 1.9.11~
(c++)"CommandLine::CommandLine()@APTPKG_6.0" 1.1~exp9
(c++)"Configuration::FindVector(char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool) const@APTPKG_6.0" 1.1~exp9
(c++)"debDebianSourceDirIndex::GetType() const@APTPKG_6.0" 1.1~exp9
@@ -1288,14 +1289,14 @@ libapt-pkg.so.6.0 libapt-pkg6.0 #MINVER#
(c++)"vtable for SigVerify@APTPKG_6.0" 1.1~exp9
(c++)"vtable for TranslationsCopy@APTPKG_6.0" 1.1~exp9
### ABI 6
- (c++)"APT::CacheFilter::ParsePattern(APT::StringView, pkgCacheFile*)@APTPKG_6.0" 1.9.10
- (c++)"APT::CacheSetHelper::PackageFromPattern(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.9.10
- (c++)"APT::CacheSetHelper::showPatternSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.9.10
- (c++)"APT::String::DisplayLength(APT::StringView)@APTPKG_6.0" 1.9.10
- (c++)"Hashes::GetHashString(Hashes::SupportedHashes)@APTPKG_6.0" 1.9.10
- (c++)"pkgCache::VerIterator::TranslatedDescriptionForLanguage(APT::StringView) const@APTPKG_6.0" 1.9.10
- (c++)"pkgPolicy::SetPriority(pkgCache::PkgFileIterator const&, short)@APTPKG_6.0" 1.9.10
- (c++)"pkgPolicy::SetPriority(pkgCache::VerIterator const&, short)@APTPKG_6.0" 1.9.10
+ (c++)"APT::CacheFilter::ParsePattern(APT::StringView, pkgCacheFile*)@APTPKG_6.0" 1.9.11~
+ (c++)"APT::CacheSetHelper::PackageFromPattern(APT::PackageContainerInterface*, pkgCacheFile&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.9.11~
+ (c++)"APT::CacheSetHelper::showPatternSelection(pkgCache::PkgIterator const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.9.11~
+ (c++)"APT::String::DisplayLength(APT::StringView)@APTPKG_6.0" 1.9.11~
+ (c++)"Hashes::GetHashString(Hashes::SupportedHashes)@APTPKG_6.0" 1.9.11~
+ (c++)"pkgCache::VerIterator::TranslatedDescriptionForLanguage(APT::StringView) const@APTPKG_6.0" 1.9.11~
+ (c++)"pkgPolicy::SetPriority(pkgCache::PkgFileIterator const&, short)@APTPKG_6.0" 1.9.11~
+ (c++)"pkgPolicy::SetPriority(pkgCache::VerIterator const&, short)@APTPKG_6.0" 1.9.11~
### dpkg selection state changer & general dpkg interfacing
(c++)"APT::StateChanges::clear()@APTPKG_6.0" 1.1~exp15
(c++)"APT::StateChanges::empty() const@APTPKG_6.0" 1.1~exp15
@@ -1418,11 +1419,11 @@ libapt-pkg.so.6.0 libapt-pkg6.0 #MINVER#
(c++)"RemoveFileAt(char const*, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.5~beta2~
(c++|optional=std)"void std::vector<pkgAcquireStatus::ReleaseInfoChange, std::allocator<pkgAcquireStatus::ReleaseInfoChange> >::emplace_back<pkgAcquireStatus::ReleaseInfoChange>(pkgAcquireStatus::ReleaseInfoChange&&)@APTPKG_6.0" 1.5~beta2~
(c++)"pkgAcqMethod::FetchItem::Proxy[abi:cxx11]()@APTPKG_6.0" 1.6~alpha1~
- (c++)"debSystem::ArchitecturesSupported[abi:cxx11]() const@APTPKG_6.0" 1.9.10
- (c++)"debSystem::MultiArchSupported() const@APTPKG_6.0" 1.9.10
- (c++)"debSystem::IsLocked()@APTPKG_6.0" 1.9.10
- (c++)"debSystem::LockInner()@APTPKG_6.0" 1.9.10
- (c++)"debSystem::UnLockInner(bool)@APTPKG_6.0" 1.9.10
+ (c++)"debSystem::ArchitecturesSupported[abi:cxx11]() const@APTPKG_6.0" 1.9.11~
+ (c++)"debSystem::MultiArchSupported() const@APTPKG_6.0" 1.9.11~
+ (c++)"debSystem::IsLocked()@APTPKG_6.0" 1.9.11~
+ (c++)"debSystem::LockInner()@APTPKG_6.0" 1.9.11~
+ (c++)"debSystem::UnLockInner(bool)@APTPKG_6.0" 1.9.11~
# gcc-8 artifacts
(c++|optional=std)"std::enable_if<std::__and_<std::__not_<std::__is_tuple_like<IndexTarget> >, std::is_move_constructible<IndexTarget>, std::is_move_assignable<IndexTarget> >::value, void>::type std::swap<IndexTarget>(IndexTarget&, IndexTarget&)@APTPKG_6.0" 1.5~beta2~
(c++|optional=std)"pkgAcqMethod::SendMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >&&)@APTPKG_6.0" 1.7.0~alpha3~
@@ -1477,35 +1478,35 @@ libapt-pkg.so.6.0 libapt-pkg6.0 #MINVER#
(c++|optional=std)"std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::~vector()@APTPKG_6.0" 0.8.12
(c++|optional=std)"void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char*>(char*, char*, std::forward_iterator_tag)@APTPKG_6.0" 1.7.0~alpha3~
(c++|optional=std)"void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<char const*>(char const*, char const*, std::forward_iterator_tag)@APTPKG_6.0" 1.7.0~alpha3~
- (c++|optional=std)"typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.10
- (c++|optional=std)"typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.10
- (c++|optional=std)"typeinfo for std::_Sp_counted_deleter<__res_state*, void (*)(__res_state*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.10
- (c++|optional=std)"typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.10
- (c++|optional=std)"typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.10
- (c++|optional=std)"typeinfo name for std::_Sp_counted_deleter<__res_state*, void (*)(__res_state*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.10
- (c++|optional=std)"typeinfo name for void (*)(__res_state*)@APTPKG_6.0" 1.9.10
- (c++|optional=std)"vtable for std::_Sp_counted_deleter<__res_state*, void (*)(__res_state*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.10
+ (c++|optional=std)"typeinfo for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
+ (c++|optional=std)"typeinfo for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
+ (c++|optional=std)"typeinfo for std::_Sp_counted_deleter<__res_state*, void (*)(__res_state*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
+ (c++|optional=std)"typeinfo name for std::_Mutex_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
+ (c++|optional=std)"typeinfo name for std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
+ (c++|optional=std)"typeinfo name for std::_Sp_counted_deleter<__res_state*, void (*)(__res_state*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
+ (c++|optional=std)"typeinfo name for void (*)(__res_state*)@APTPKG_6.0" 1.9.11~
+ (c++|optional=std)"vtable for std::_Sp_counted_deleter<__res_state*, void (*)(__res_state*), std::allocator<void>, (__gnu_cxx::_Lock_policy)2>@APTPKG_6.0" 1.9.11~
### try to ignore std:: template instances
(c++)"void std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::emplace_back<APT::Configuration::Compressor>(APT::Configuration::Compressor&&)@APTPKG_6.0" 1.9~
(c++)"void std::vector<APT::StringView*, std::allocator<APT::StringView*> >::emplace_back<APT::StringView*>(APT::StringView*&&)@APTPKG_6.0" 1.9~
- (regex|optional)".*hash32.*\.ifunc@APTPKG_6.0" 1.9.10
+ (regex|optional)".*hash32.*\.ifunc@APTPKG_6.0" 1.9.11~
### Internal functions needed for testing purposes
- (c++)"APT::Internal::Patterns::BaseRegexMatcher::~BaseRegexMatcher()@APTPKG_6.0" 1.9.10
- (c++)"APT::Internal::Patterns::BaseRegexMatcher::BaseRegexMatcher(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.9.10
- (c++)"APT::Internal::Patterns::BaseRegexMatcher::operator()(char const*)@APTPKG_6.0" 1.9.10
- (c++)"APT::Internal::PatternTreeParser::Node::error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.9.10
- (c++)"APT::Internal::PatternTreeParser::parse()@APTPKG_6.0" 1.9.10
- (c++)"APT::Internal::PatternTreeParser::parseTop()@APTPKG_6.0" 1.9.10
- (c++)"typeinfo for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.10
- (c++)"typeinfo for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.10
- (c++)"typeinfo for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.10
- (c++)"typeinfo for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.10
- (c++)"typeinfo name for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.10
- (c++)"typeinfo name for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.10
- (c++)"typeinfo name for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.10
- (c++)"typeinfo name for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.10
- (c++)"void std::vector<std::unique_ptr<APT::Internal::PatternTreeParser::Node, std::default_delete<APT::Internal::PatternTreeParser::Node> >, std::allocator<std::unique_ptr<APT::Internal::PatternTreeParser::Node, std::default_delete<APT::Internal::PatternTreeParser::Node> > > >::emplace_back<std::unique_ptr<APT::Internal::PatternTreeParser::Node, std::default_delete<APT::Internal::PatternTreeParser::Node> > >(std::unique_ptr<APT::Internal::PatternTreeParser::Node, std::default_delete<APT::Internal::PatternTreeParser::Node> >&&)@APTPKG_6.0" 1.9.10
- (c++)"vtable for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.10
- (c++)"vtable for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.10
- (c++)"vtable for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.10
- (c++)"vtable for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.10
+ (c++)"APT::Internal::Patterns::BaseRegexMatcher::~BaseRegexMatcher()@APTPKG_6.0" 1.9.11~
+ (c++)"APT::Internal::Patterns::BaseRegexMatcher::BaseRegexMatcher(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@APTPKG_6.0" 1.9.11~
+ (c++)"APT::Internal::Patterns::BaseRegexMatcher::operator()(char const*)@APTPKG_6.0" 1.9.11~
+ (c++)"APT::Internal::PatternTreeParser::Node::error(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >)@APTPKG_6.0" 1.9.11~
+ (c++)"APT::Internal::PatternTreeParser::parse()@APTPKG_6.0" 1.9.11~
+ (c++)"APT::Internal::PatternTreeParser::parseTop()@APTPKG_6.0" 1.9.11~
+ (c++)"typeinfo for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.11~
+ (c++)"typeinfo for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.11~
+ (c++)"typeinfo for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.11~
+ (c++)"typeinfo for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.11~
+ (c++)"typeinfo name for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.11~
+ (c++)"typeinfo name for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.11~
+ (c++)"typeinfo name for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.11~
+ (c++)"typeinfo name for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.11~
+ (c++)"void std::vector<std::unique_ptr<APT::Internal::PatternTreeParser::Node, std::default_delete<APT::Internal::PatternTreeParser::Node> >, std::allocator<std::unique_ptr<APT::Internal::PatternTreeParser::Node, std::default_delete<APT::Internal::PatternTreeParser::Node> > > >::emplace_back<std::unique_ptr<APT::Internal::PatternTreeParser::Node, std::default_delete<APT::Internal::PatternTreeParser::Node> > >(std::unique_ptr<APT::Internal::PatternTreeParser::Node, std::default_delete<APT::Internal::PatternTreeParser::Node> >&&)@APTPKG_6.0" 1.9.11~
+ (c++)"vtable for APT::Internal::PatternTreeParser::Error@APTPKG_6.0" 1.9.11~
+ (c++)"vtable for APT::Internal::PatternTreeParser::Node@APTPKG_6.0" 1.9.11~
+ (c++)"vtable for APT::Internal::PatternTreeParser::PatternNode@APTPKG_6.0" 1.9.11~
+ (c++)"vtable for APT::Internal::PatternTreeParser::WordNode@APTPKG_6.0" 1.9.11~
diff --git a/test/libapt/tagfile_test.cc b/test/libapt/tagfile_test.cc
index 8823ff781..919b46cdb 100644
--- a/test/libapt/tagfile_test.cc
+++ b/test/libapt/tagfile_test.cc
@@ -285,3 +285,61 @@ TEST(TagFileTest, Comments)
EXPECT_FALSE(tfile.Step(section));
}
+
+TEST(TagFileTest, EmptyTagName)
+{
+ FileFd fd;
+ createTemporaryFile("emptytagname", fd, NULL, "0:\n"
+"PACKAGE:0\n"
+"\n"
+":\n"
+"PACKAGE:\n"
+"\n"
+"PACKAGE:\n"
+":\n"
+"\n"
+"PACKAGE:\n"
+":\n"
+"Version:1\n"
+"\n"
+"PACKAGE::\n"
+ );
+ pkgTagFile tfile(&fd);
+ pkgTagSection section;
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(2u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ("0", section.FindS("PACKAGE"));
+ EXPECT_TRUE(section.Exists("0"));
+ EXPECT_EQ("", section.FindS("0"));
+
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(2u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ("", section.FindS("PACKAGE"));
+ EXPECT_TRUE(section.Exists(""));
+ EXPECT_EQ("", section.FindS(""));
+
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(2u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ("", section.FindS("PACKAGE"));
+ EXPECT_TRUE(section.Exists(""));
+ EXPECT_EQ("", section.FindS(""));
+
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(3u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ("", section.FindS("PACKAGE"));
+ EXPECT_TRUE(section.Exists(""));
+ EXPECT_EQ("", section.FindS(""));
+ EXPECT_TRUE(section.Exists("Version"));
+ EXPECT_EQ("1", section.FindS("Version"));
+
+ ASSERT_TRUE(tfile.Step(section));
+ EXPECT_EQ(1u, section.Count());
+ EXPECT_TRUE(section.Exists("PACKAGE"));
+ EXPECT_EQ(":", section.FindS("PACKAGE"));
+
+ EXPECT_FALSE(tfile.Step(section));
+}