about summary refs log tree commit diff
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2015-11-16T10·53-0500
committerShea Levy <shea@shealevy.com>2015-11-16T10·53-0500
commit58d2fac91d0da7312e3ef147b6b290ea16031da8 (patch)
treeba474622269f885954478d3713ab39da098a8821
parent4390142315a0d6ed0f67712061498c68389ea3b7 (diff)
AutoDelete: Add default constructor with deletion disabled
-rw-r--r--src/libstore/build.cc2
-rw-r--r--src/libutil/util.cc8
-rw-r--r--src/libutil/util.hh2
3 files changed, 11 insertions, 1 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index 6f662f81daaf..6112d528cce5 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -2534,7 +2534,7 @@ void DerivationGoal::runChild()
 
             Path sandboxFile = drvPath + ".sb";
             if (pathExists(sandboxFile)) deletePath(sandboxFile);
-            autoDelSandbox = AutoDelete(sandboxFile);
+            autoDelSandbox.reset(sandboxFile, false);
 
             writeFile(sandboxFile, sandboxProfile);
 
diff --git a/src/libutil/util.cc b/src/libutil/util.cc
index 27116fd18297..84f578eec355 100644
--- a/src/libutil/util.cc
+++ b/src/libutil/util.cc
@@ -599,6 +599,8 @@ string drainFD(int fd)
 //////////////////////////////////////////////////////////////////////
 
 
+AutoDelete::AutoDelete() : del{false} {}
+
 AutoDelete::AutoDelete(const string & p, bool recursive) : path(p)
 {
     del = true;
@@ -626,6 +628,12 @@ void AutoDelete::cancel()
     del = false;
 }
 
+void AutoDelete::reset(const Path & p, bool recursive = true) {
+    this-> p = p;
+    this->recursive = recursive;
+    del = true;
+}
+
 
 
 //////////////////////////////////////////////////////////////////////
diff --git a/src/libutil/util.hh b/src/libutil/util.hh
index 23d01e9a6ca0..f4026a0a884b 100644
--- a/src/libutil/util.hh
+++ b/src/libutil/util.hh
@@ -199,9 +199,11 @@ class AutoDelete
     bool del;
     bool recursive;
 public:
+    AutoDelete();
     AutoDelete(const Path & p, bool recursive = true);
     ~AutoDelete();
     void cancel();
+    void reset(const Path & p, bool recursive = true);
     operator Path() const { return path; }
 };