Use a scoped_ptr to avoid FileFilter leaks.
authorMichael Vrable <vrable@cs.hmc.edu>
Mon, 21 Oct 2013 17:53:16 +0000 (10:53 -0700)
committerMichael Vrable <vrable@cs.hmc.edu>
Sun, 26 Jan 2014 23:45:38 +0000 (15:45 -0800)
main.cc
store.cc
store.h

diff --git a/main.cc b/main.cc
index 9734521..742af6c 100644 (file)
--- a/main.cc
+++ b/main.cc
@@ -850,8 +850,8 @@ int main(int argc, char *argv[])
         dbmeta_filename += backup_scheme + "-";
     dbmeta_filename += timestamp + ".meta" + filter_extension;
     RemoteFile *dbmeta_file = remote->alloc_file(dbmeta_filename, "meta");
-    FileFilter *dbmeta_filter = FileFilter::New(dbmeta_file->get_fd(),
-                                                filter_program);
+    scoped_ptr<FileFilter> dbmeta_filter(FileFilter::New(dbmeta_file->get_fd(),
+                                                         filter_program));
     if (dbmeta_filter == NULL) {
         fprintf(stderr, "Unable to open descriptor output file: %m\n");
         return 1;
@@ -899,8 +899,8 @@ int main(int argc, char *argv[])
 
     RemoteFile *descriptor_file = remote->alloc_file(desc_filename,
                                                      "snapshots");
-    FileFilter *descriptor_filter = FileFilter::New(descriptor_file->get_fd(),
-                                                    signature_filter.c_str());
+    scoped_ptr<FileFilter> descriptor_filter(
+        FileFilter::New(descriptor_file->get_fd(), signature_filter.c_str()));
     if (descriptor_filter == NULL) {
         fprintf(stderr, "Unable to open descriptor output file: %m\n");
         return 1;
index ba6d692..a77d64a 100644 (file)
--- a/store.cc
+++ b/store.cc
@@ -64,7 +64,7 @@ Tarfile::Tarfile(RemoteFile *file, const string &segment)
     assert(sizeof(struct tar_header) == TAR_BLOCK_SIZE);
 
     this->file = file;
-    this->filter = FileFilter::New(file->get_fd(), filter_program);
+    this->filter.reset(FileFilter::New(file->get_fd(), filter_program));
 }
 
 Tarfile::~Tarfile()
diff --git a/store.h b/store.h
index 122a4ac..ab5f8e9 100644 (file)
--- a/store.h
+++ b/store.h
@@ -33,6 +33,7 @@
 #include <iostream>
 #include <sstream>
 
+#include "cumulus.h"
 #include "localdb.h"
 #include "remote.h"
 #include "ref.h"
@@ -122,7 +123,7 @@ private:
     std::string segment_name;
 
     RemoteFile *file;
-    FileFilter *filter;
+    scoped_ptr<FileFilter> filter;
 
     // Write data to the tar file
     void tar_write(const char *data, size_t size);