summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoel Taylor <me@joelt.io>2014-08-21 14:06:49 -0700
committerLudovic Courtès <ludo@gnu.org>2015-05-11 17:26:37 +0200
commit8c766e48d5c4741b63a4f24dc91138f587c04a5a (patch)
tree5841bac55032dbcdd0573568b2fc0d903ed12849
parentd4e7c195fabf0f24c2ffbd4ca8f189489bbbf44d (diff)
downloadguix-8c766e48d5c4741b63a4f24dc91138f587c04a5a.tar.gz
fix disappearing bash arguments
-rw-r--r--nix/libstore/build.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/nix/libstore/build.cc b/nix/libstore/build.cc
index b848b8ca33..5c605a7bd7 100644
--- a/nix/libstore/build.cc
+++ b/nix/libstore/build.cc
@@ -2163,8 +2163,13 @@ void DerivationGoal::initChild()
         /* Fill in the arguments. */
         string builderBasename = baseNameOf(drv.builder);
         args.push_back(builderBasename.c_str());
-        foreach (Strings::iterator, i, drv.args)
-            args.push_back(rewriteHashes(*i, rewritesToTmp).c_str());
+        foreach (Strings::iterator, i, drv.args) {
+            auto re = rewriteHashes(*i, rewritesToTmp);
+            auto cstr = new char[re.length()+1];
+            std::strcpy(cstr, re.c_str());
+
+            args.push_back(cstr);
+        }
         args.push_back(0);
 
         restoreSIGPIPE();