path: root/run-command.h
diff options
authorJeff King <>2014-05-15 08:33:26 (GMT)
committerJunio C Hamano <>2014-05-15 16:49:09 (GMT)
commitc460c0ecdca46be85f6d9c845f9df7ce0e45c3c2 (patch)
tree84de4c342f5af7f070a33b974691f3282892426b /run-command.h
parent6308767f0bb58116cb405e1f4f77f5dfc1589920 (diff)
run-command: store an optional argv_array
All child_process structs need to point to an argv. For flexibility, we do not mandate the use of a dynamic argv_array. However, because the child_process does not own the memory, this can make memory management with a separate argv_array difficult. For example, if a function calls start_command but not finish_command, the argv memory must persist. The code needs to arrange to clean up the argv_array separately after finish_command runs. As a result, some of our code in this situation just leaks the memory. To help such cases, this patch adds a built-in argv_array to the child_process, which gets cleaned up automatically (both in finish_command and when start_command fails). Callers may use it if they choose, but can continue to use the raw argv if they wish. Signed-off-by: Jeff King <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'run-command.h')
1 files changed, 3 insertions, 0 deletions
diff --git a/run-command.h b/run-command.h
index 3653bfa..ea73de3 100644
--- a/run-command.h
+++ b/run-command.h
@@ -5,8 +5,11 @@
#include <pthread.h>
+#include "argv-array.h"
struct child_process {
const char **argv;
+ struct argv_array args;
pid_t pid;
* Using .in, .out, .err: