diff options
author | Julian Andres Klode <jak@debian.org> | 2020-02-26 18:42:13 +0000 |
---|---|---|
committer | Julian Andres Klode <jak@debian.org> | 2020-02-26 18:42:13 +0000 |
commit | c38e0047d95305e5984e822f670055cde6aa5f6a (patch) | |
tree | 71eb37d2df34eebc91cffbb46a879bd21a12b8e7 | |
parent | a096b580694cb36f29cdbce8f1db797a08e36709 (diff) | |
parent | 62ca61ff4ac794f9c42335d8286343149d4313d1 (diff) |
Merge branch 'pu/misc' into 'master'
Pu/misc
See merge request apt-team/apt!107
-rw-r--r-- | apt-pkg/cachefilter-patterns.h | 2 | ||||
-rw-r--r-- | apt-pkg/cacheset.cc | 4 | ||||
-rw-r--r-- | apt-pkg/cacheset.h | 8 | ||||
-rw-r--r-- | apt-pkg/contrib/strutl.cc | 4 | ||||
-rw-r--r-- | apt-pkg/edsp/edspsystem.h | 2 | ||||
-rw-r--r-- | apt-pkg/metaindex.cc | 6 | ||||
-rw-r--r-- | apt-pkg/tagfile.cc | 5 | ||||
-rw-r--r-- | debian/libapt-pkg6.0.symbols | 87 | ||||
-rw-r--r-- | test/libapt/tagfile_test.cc | 58 |
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)); +} |