From cb7822179bd21abd079664a0af02f8ea6559c788 Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sat, 15 Feb 2025 09:51:55 +0100 Subject: fileutl: Convert FileFd::d to std::unique_ptr --- apt-pkg/contrib/fileutl.cc | 30 +++++++++++++----------------- apt-pkg/contrib/fileutl.h | 2 +- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 3626f00ec..4dd7b1ac3 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -1290,13 +1290,13 @@ public: /*}}}*/ class APT_HIDDEN BufferedWriteFileFdPrivate : public FileFdPrivate { /*{{{*/ protected: - FileFdPrivate *wrapped; + std::unique_ptr wrapped; simple_buffer writebuffer; public: - explicit BufferedWriteFileFdPrivate(FileFdPrivate *Priv) : - FileFdPrivate(Priv->filefd), wrapped(Priv) {}; + explicit BufferedWriteFileFdPrivate(std::unique_ptr &&Priv) : + FileFdPrivate(Priv->filefd), wrapped(std::move(Priv)) {}; [[nodiscard]] APT::Configuration::Compressor get_compressor() const override { @@ -1429,7 +1429,6 @@ public: } virtual ~BufferedWriteFileFdPrivate() { - delete wrapped; } }; /*}}}*/ @@ -2396,20 +2395,20 @@ ssize_t InternalUnbufferedRead(void *const To, unsigned long long const Size) ov }; /*}}}*/ // FileFd Constructors /*{{{*/ -FileFd::FileFd(std::string FileName,unsigned int const Mode,unsigned long AccessMode) : iFd(-1), Flags(0), d(NULL) +FileFd::FileFd(std::string FileName,unsigned int const Mode,unsigned long AccessMode) : iFd(-1), Flags(0), d(nullptr) { Open(FileName,Mode, None, AccessMode); } -FileFd::FileFd(std::string FileName,unsigned int const Mode, CompressMode Compress, unsigned long AccessMode) : iFd(-1), Flags(0), d(NULL) +FileFd::FileFd(std::string FileName,unsigned int const Mode, CompressMode Compress, unsigned long AccessMode) : iFd(-1), Flags(0), d(nullptr) { Open(FileName,Mode, Compress, AccessMode); } -FileFd::FileFd() : iFd(-1), Flags(AutoClose), d(NULL) {} -FileFd::FileFd(int const Fd, unsigned int const Mode, CompressMode Compress) : iFd(-1), Flags(0), d(NULL) +FileFd::FileFd() : iFd(-1), Flags(AutoClose), d(nullptr) {} +FileFd::FileFd(int const Fd, unsigned int const Mode, CompressMode Compress) : iFd(-1), Flags(0), d(nullptr) { OpenDescriptor(Fd, Mode, Compress); } -FileFd::FileFd(int const Fd, bool const AutoClose) : iFd(-1), Flags(0), d(NULL) +FileFd::FileFd(int const Fd, bool const AutoClose) : iFd(-1), Flags(0), d(nullptr) { OpenDescriptor(Fd, ReadWrite, None, AutoClose); } @@ -2643,7 +2642,7 @@ bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::C /* dummy so that the rest can be 'else if's */; #define APT_COMPRESS_INIT(NAME, CONSTRUCTOR) \ else if (compressor.Name == NAME) \ - d = new CONSTRUCTOR(this) + d = std::make_unique(this) #ifdef HAVE_ZLIB APT_COMPRESS_INIT("gzip", GzipFileFdPrivate); #endif @@ -2662,12 +2661,12 @@ bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::C #endif #undef APT_COMPRESS_INIT else if (compressor.Name == "." || compressor.Binary.empty() == true) - d = new DirectFileFdPrivate(this); + d = std::make_unique(this); else - d = new PipedFileFdPrivate(this); + d = std::make_unique(this); if (Mode & BufferedWrite) - d = new BufferedWriteFileFdPrivate(d); + d = std::make_unique(std::move(d)); d->set_openmode(Mode); d->set_compressor(compressor); @@ -2692,8 +2691,6 @@ FileFd::~FileFd() Close(); if (d != NULL) d->InternalClose(FileName); - delete d; - d = NULL; } /*}}}*/ // FileFd::Read - Read a bit of the file /*{{{*/ @@ -2911,7 +2908,7 @@ unsigned long long FileFd::Tell() return Res; } /*}}}*/ -static bool StatFileFd(char const * const msg, int const iFd, std::string const &FileName, struct stat &Buf, FileFdPrivate * const d) /*{{{*/ +static bool StatFileFd(char const * const msg, int const iFd, std::string const &FileName, struct stat &Buf, std::unique_ptr const &d) /*{{{*/ { bool ispipe = (d != NULL && d->get_is_pipe() == true); if (ispipe == false) @@ -2989,7 +2986,6 @@ bool FileFd::Close() if (d != NULL) { Res &= d->InternalClose(FileName); - delete d; d = NULL; } diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index edf18ec2b..53c6d85c2 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -167,7 +167,7 @@ class APT_PUBLIC FileFd virtual ~FileFd(); private: - FileFdPrivate * d; + std::unique_ptr d; APT_HIDDEN FileFd(const FileFd &); APT_HIDDEN FileFd & operator=(const FileFd &); APT_HIDDEN bool OpenInternDescriptor(unsigned int const Mode, APT::Configuration::Compressor const &compressor); -- cgit v1.2.3-70-g09d2