]> git.saurik.com Git - apt.git/blobdiff - ftparchive/writer.h
fix memory leaks reported by -fsanitize
[apt.git] / ftparchive / writer.h
index 0ba60db5e646587fc2ebe64f93670b47e112b979..b9c1f672a3dcecedd49b8f577851603a590211d7 100644 (file)
@@ -64,6 +64,7 @@ class FTWScanner
 
    public:
    FileFd *Output;
+   bool OwnsOutput;
    unsigned int DoHashes;
 
    unsigned long DeLinkLimit;
@@ -79,7 +80,7 @@ class FTWScanner
    bool SetExts(string const &Vals);
 
    FTWScanner(FileFd * const Output, string const &Arch = string());
-   virtual ~FTWScanner() {};
+   virtual ~FTWScanner();
 };
 
 class MultiCompress;
@@ -88,17 +89,12 @@ class TranslationWriter
 {
    MultiCompress *Comp;
    std::set<string> Included;
-   unsigned short RefCounter;
    FileFd *Output;
 
    public:
-   void IncreaseRefCounter() { ++RefCounter; };
-   unsigned short DecreaseRefCounter() { return (RefCounter == 0) ? 0 : --RefCounter; };
-   unsigned short GetRefCounter() const { return RefCounter; };
    bool DoPackage(string const &Pkg, string const &Desc, string const &MD5);
 
    TranslationWriter(string const &File, string const &TransCompress, mode_t const &Permissions);
-   TranslationWriter() : Comp(NULL), RefCounter(0) {};
    ~TranslationWriter();
 };
 
@@ -119,18 +115,18 @@ class PackagesWriter : public FTWScanner
    string PathPrefix;
    string DirStrip;
    struct CacheDB::Stats &Stats;
-   TranslationWriter *TransWriter;
+   TranslationWriter * const TransWriter;
 
    inline bool ReadOverride(string const &File) {return Over.ReadOverride(File);};
    inline bool ReadExtraOverride(string const &File) 
       {return Over.ReadExtraOverride(File);};
    virtual bool DoPackage(string FileName);
 
-   PackagesWriter(FileFd * const Output, string const &DB,
+   PackagesWriter(FileFd * const Output, TranslationWriter * const TransWriter, string const &DB,
                   string const &Overrides,
                   string const &ExtOverrides = "",
                  string const &Arch = "");
-   virtual ~PackagesWriter() {};
+   virtual ~PackagesWriter();
 };
 
 class ContentsWriter : public FTWScanner