From b52c6552c44fcb997b0db9f5e9f17b4674dd5359 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 30 Apr 2019 12:07:07 +0200 Subject: Add 'explicit' to most single argument constructors This prevents implicit conversions that we do not want, such as having a FileFd* being converted to a debListParser. Two cases are not yet handled because they require changes in code using them: 1. The classes in hashes.h 2. The URI class - this one is used quite a lot --- apt-pkg/contrib/configuration.h | 4 ++-- apt-pkg/contrib/fileutl.cc | 2 +- apt-pkg/contrib/mmap.h | 2 +- apt-pkg/contrib/progress.h | 4 ++-- apt-pkg/deb/debindexfile.h | 10 +++++----- apt-pkg/deb/deblistparser.h | 6 +++--- apt-pkg/deb/debmetaindex.cc | 2 +- apt-pkg/deb/debrecords.h | 2 +- apt-pkg/deb/dpkgpm.h | 2 +- apt-pkg/edsp/edspindexfile.h | 6 +++--- apt-pkg/edsp/edsplistparser.h | 6 +++--- apt-pkg/edsp/edspsystem.h | 2 +- 12 files changed, 24 insertions(+), 24 deletions(-) (limited to 'apt-pkg') diff --git a/apt-pkg/contrib/configuration.h b/apt-pkg/contrib/configuration.h index 2a3ae1aa4..b5dfe721f 100644 --- a/apt-pkg/contrib/configuration.h +++ b/apt-pkg/contrib/configuration.h @@ -119,7 +119,7 @@ class Configuration void Dump(std::ostream& str, char const * const root, char const * const format, bool const emptyValue); - Configuration(const Item *Root); + explicit Configuration(const Item *Root); Configuration(); ~Configuration(); @@ -130,7 +130,7 @@ class Configuration APT_HIDDEN void clearPatterns(); public: - MatchAgainstConfig(char const * Config); + explicit MatchAgainstConfig(char const * Config); virtual ~MatchAgainstConfig(); /** \brief Returns \b true for a string matching one of the patterns */ diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 3b4a4a10c..8d6cb3146 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -1944,7 +1944,7 @@ class APT_HIDDEN LzmaFileFdPrivate: public FileFdPrivate { /*{{{*/ bool eof; bool compressing; - LZMAFILE(FileFd * const fd) : file(nullptr), filefd(fd), eof(false), compressing(false) { buffer[0] = '\0'; } + explicit LZMAFILE(FileFd * const fd) : file(nullptr), filefd(fd), eof(false), compressing(false) { buffer[0] = '\0'; } ~LZMAFILE() { if (compressing == true && filefd->Failed() == false) diff --git a/apt-pkg/contrib/mmap.h b/apt-pkg/contrib/mmap.h index 63d54d27c..3af1f47fb 100644 --- a/apt-pkg/contrib/mmap.h +++ b/apt-pkg/contrib/mmap.h @@ -74,7 +74,7 @@ class MMap bool Sync(unsigned long Start,unsigned long Stop); MMap(FileFd &F,unsigned long Flags); - MMap(unsigned long Flags); + explicit MMap(unsigned long Flags); virtual ~MMap(); }; diff --git a/apt-pkg/contrib/progress.h b/apt-pkg/contrib/progress.h index 4406a388b..903e6613e 100644 --- a/apt-pkg/contrib/progress.h +++ b/apt-pkg/contrib/progress.h @@ -80,9 +80,9 @@ class OpTextProgress : public OpProgress virtual void Done() APT_OVERRIDE; - OpTextProgress(bool NoUpdate = false) : NoUpdate(NoUpdate), + explicit OpTextProgress(bool NoUpdate = false) : NoUpdate(NoUpdate), NoDisplay(false), LastLen(0) {}; - OpTextProgress(Configuration &Config); + explicit OpTextProgress(Configuration &Config); virtual ~OpTextProgress() {Done();}; }; diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h index 5c89f9c54..222fed229 100644 --- a/apt-pkg/deb/debindexfile.h +++ b/apt-pkg/deb/debindexfile.h @@ -44,7 +44,7 @@ public: virtual pkgCacheListParser * CreateListParser(FileFd &Pkg) APT_OVERRIDE; - debStatusIndex(std::string const &File); + explicit debStatusIndex(std::string const &File); virtual ~debStatusIndex(); }; @@ -83,7 +83,7 @@ public: // Interface for the Cache Generator virtual bool HasPackages() const APT_OVERRIDE; - debTranslationsIndex(IndexTarget const &Target); + explicit debTranslationsIndex(IndexTarget const &Target); virtual ~debTranslationsIndex(); }; @@ -141,7 +141,7 @@ public: // Interface for acquire - debDebPkgFileIndex(std::string const &DebFile); + explicit debDebPkgFileIndex(std::string const &DebFile); virtual ~debDebPkgFileIndex(); //FIXME: use proper virtual-handling on next ABI break @@ -162,7 +162,7 @@ public: virtual pkgSrcRecords::Parser *CreateSrcParser() const APT_OVERRIDE; virtual bool HasPackages() const APT_OVERRIDE {return false;}; - debDscFileIndex(std::string const &DscFile); + explicit debDscFileIndex(std::string const &DscFile); virtual ~debDscFileIndex(); }; @@ -191,7 +191,7 @@ public: // Abort if the file does not exist. virtual bool Exists() const APT_OVERRIDE {return true;}; - debStringPackageIndex(std::string const &content); + explicit debStringPackageIndex(std::string const &content); virtual ~debStringPackageIndex(); }; #endif diff --git a/apt-pkg/deb/deblistparser.h b/apt-pkg/deb/deblistparser.h index f02252d58..ad2b947fe 100644 --- a/apt-pkg/deb/deblistparser.h +++ b/apt-pkg/deb/deblistparser.h @@ -121,7 +121,7 @@ class APT_HIDDEN debListParser : public pkgCacheListParser APT_PUBLIC static const char *ConvertRelation(const char *I,unsigned int &Op); - debListParser(FileFd *File); + explicit debListParser(FileFd *File); virtual ~debListParser(); }; @@ -145,7 +145,7 @@ class APT_HIDDEN debTranslationsParser : public debListParser virtual APT::StringView Version() APT_OVERRIDE { return ""; } #endif - debTranslationsParser(FileFd *File) + explicit debTranslationsParser(FileFd *File) : debListParser(File) {}; }; @@ -153,7 +153,7 @@ class APT_HIDDEN debStatusListParser : public debListParser { public: virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver); - debStatusListParser(FileFd *File) + explicit debStatusListParser(FileFd *File) : debListParser(File) {}; }; #endif diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index f2a6b97ad..13575e10b 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -109,7 +109,7 @@ class APT_HIDDEN debReleaseIndexPrivate /*{{{*/ std::vector SupportedComponents; std::map const ReleaseOptions; - debReleaseIndexPrivate(std::map const &Options) : CheckValidUntil(metaIndex::TRI_UNSET), ValidUntilMin(0), ValidUntilMax(0), CheckDate(metaIndex::TRI_UNSET), DateMaxFuture(0), NotBefore(0), ReleaseOptions(Options) {} + explicit debReleaseIndexPrivate(std::map const &Options) : CheckValidUntil(metaIndex::TRI_UNSET), ValidUntilMin(0), ValidUntilMax(0), CheckDate(metaIndex::TRI_UNSET), DateMaxFuture(0), NotBefore(0), ReleaseOptions(Options) {} }; /*}}}*/ // ReleaseIndex::MetaIndex* - display helpers /*{{{*/ diff --git a/apt-pkg/deb/debrecords.h b/apt-pkg/deb/debrecords.h index 7c3b9020c..ea3fc320a 100644 --- a/apt-pkg/deb/debrecords.h +++ b/apt-pkg/deb/debrecords.h @@ -85,7 +85,7 @@ class APT_HIDDEN debDebFileRecordParser : public debRecordParserBase public: virtual std::string FileName() APT_OVERRIDE; - debDebFileRecordParser(std::string FileName); + explicit debDebFileRecordParser(std::string FileName); virtual ~debDebFileRecordParser(); }; diff --git a/apt-pkg/deb/dpkgpm.h b/apt-pkg/deb/dpkgpm.h index 67c141766..3ba4770e8 100644 --- a/apt-pkg/deb/dpkgpm.h +++ b/apt-pkg/deb/dpkgpm.h @@ -131,7 +131,7 @@ class pkgDPkgPM : public pkgPackageManager public: - pkgDPkgPM(pkgDepCache *Cache); + explicit pkgDPkgPM(pkgDepCache *Cache); virtual ~pkgDPkgPM(); APT_HIDDEN static bool ExpandPendingCalls(std::vector &List, pkgDepCache &Cache); diff --git a/apt-pkg/edsp/edspindexfile.h b/apt-pkg/edsp/edspindexfile.h index 4ac0f9d72..8fa8fdd60 100644 --- a/apt-pkg/edsp/edspindexfile.h +++ b/apt-pkg/edsp/edspindexfile.h @@ -29,7 +29,7 @@ public: virtual bool Exists() const APT_OVERRIDE; virtual bool HasPackages() const APT_OVERRIDE; - edspLikeIndex(std::string const &File); + explicit edspLikeIndex(std::string const &File); virtual ~edspLikeIndex(); }; @@ -42,7 +42,7 @@ protected: public: virtual const Type *GetType() const APT_OVERRIDE APT_PURE; - edspIndex(std::string const &File); + explicit edspIndex(std::string const &File); virtual ~edspIndex(); }; @@ -55,7 +55,7 @@ protected: public: virtual const Type *GetType() const APT_OVERRIDE APT_PURE; - eippIndex(std::string const &File); + explicit eippIndex(std::string const &File); virtual ~eippIndex(); }; diff --git a/apt-pkg/edsp/edsplistparser.h b/apt-pkg/edsp/edsplistparser.h index 59c759f9d..8f56f8abf 100644 --- a/apt-pkg/edsp/edsplistparser.h +++ b/apt-pkg/edsp/edsplistparser.h @@ -35,7 +35,7 @@ class APT_HIDDEN edspLikeListParser : public debListParser virtual APT::StringView Description_md5() APT_OVERRIDE; virtual unsigned short VersionHash() APT_OVERRIDE; - edspLikeListParser(FileFd *File); + explicit edspLikeListParser(FileFd *File); virtual ~edspLikeListParser(); }; @@ -48,7 +48,7 @@ protected: virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE; public: - edspListParser(FileFd *File); + explicit edspListParser(FileFd *File); virtual ~edspListParser(); }; @@ -58,7 +58,7 @@ protected: virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver) APT_OVERRIDE; public: - eippListParser(FileFd *File); + explicit eippListParser(FileFd *File); virtual ~eippListParser(); }; #endif diff --git a/apt-pkg/edsp/edspsystem.h b/apt-pkg/edsp/edspsystem.h index 0855bb53f..8f5452dcb 100644 --- a/apt-pkg/edsp/edspsystem.h +++ b/apt-pkg/edsp/edspsystem.h @@ -37,7 +37,7 @@ public: virtual bool FindIndex(pkgCache::PkgFileIterator File, pkgIndexFile *&Found) const APT_OVERRIDE; - edspLikeSystem(char const * const Label); + explicit edspLikeSystem(char const * const Label); virtual ~edspLikeSystem(); }; -- cgit v1.2.3 From 85e2c1b4ecbaf975d9d978f01227dc4987ee9d6c Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 30 Apr 2019 11:36:18 +0200 Subject: apt-pkg: hashes: Add 'explicit' to single argument constructors This avoids funny code where strings get implicitly converted to HashString or HashStringList. --- apt-pkg/contrib/hashes.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'apt-pkg') diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h index 9ef2945d7..c636852ec 100644 --- a/apt-pkg/contrib/hashes.h +++ b/apt-pkg/contrib/hashes.h @@ -47,7 +47,7 @@ class HashString public: HashString(std::string Type, std::string Hash); - HashString(std::string StringedHashString); // init from str as "type:hash" + explicit HashString(std::string StringedHashString); // init from str as "type:hash" HashString(); // get hash type used @@ -163,11 +163,11 @@ class HashStringList HashStringList() {} // simplifying API-compatibility constructors - HashStringList(std::string const &hash) { + explicit HashStringList(std::string const &hash) { if (hash.empty() == false) list.push_back(HashString(hash)); } - HashStringList(char const * const hash) { + explicit HashStringList(char const * const hash) { if (hash != NULL && hash[0] != '\0') list.push_back(HashString(hash)); } @@ -210,9 +210,9 @@ class Hashes * which hashes to generate. */ Hashes(); /** @param Hashes bitflag composed of #SupportedHashes */ - Hashes(unsigned int const Hashes); + explicit Hashes(unsigned int const Hashes); /** @param Hashes is a list of hashes */ - Hashes(HashStringList const &Hashes); + explicit Hashes(HashStringList const &Hashes); virtual ~Hashes(); }; -- cgit v1.2.3 From af74a9e2d55d6a9532eb3fbb9b96c65b7ddc1e4d Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Tue, 30 Apr 2019 12:32:54 +0200 Subject: apt-pkg: URI: Add 'explicit' to single argument constructor This needs a fair amount of changes elsewhere in the code, hence this is separate from the previous commits. --- apt-pkg/acquire-worker.cc | 2 +- apt-pkg/acquire.cc | 2 +- apt-pkg/contrib/strutl.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'apt-pkg') diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index 8ebee5797..32fcde181 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -766,7 +766,7 @@ bool pkgAcquire::Worker::QueueItem(pkgAcquire::Queue::QItem *Item) Message += "URI: " + Item->URI; Message += "\nFilename: " + Item->Owner->DestFile; - URI URL = Item->URI; + URI URL(Item->URI); // FIXME: We should not hard code proxy protocols here. if (URL.Access == "http" || URL.Access == "https") { diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 87bb13e39..8bb72d549 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -637,7 +637,7 @@ static void CheckDropPrivsMustBeDisabled(pkgAcquire const &Fetcher) // if its the source file (e.g. local sources) we might be lucky // by dropping the dropping only for some methods. - URI const source = (*I)->DescURI(); + URI const source((*I)->DescURI()); if (source.Access == "file" || source.Access == "copy") { std::string const conf = "Binary::" + source.Access + "::APT::Sandbox::User"; diff --git a/apt-pkg/contrib/strutl.h b/apt-pkg/contrib/strutl.h index c25ce8054..ae0aaedf9 100644 --- a/apt-pkg/contrib/strutl.h +++ b/apt-pkg/contrib/strutl.h @@ -218,8 +218,8 @@ class URI static std::string SiteOnly(const std::string &URI); static std::string ArchiveOnly(const std::string &URI); static std::string NoUserPassword(const std::string &URI); - - URI(std::string Path) {CopyFrom(Path);} + + explicit URI(std::string Path) { CopyFrom(Path); } URI() : Port(0) {} }; -- cgit v1.2.3