diff options
author | Mattias Andrée <maandree@kth.se> | 2016-08-05 14:13:22 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@kth.se> | 2016-08-05 14:13:22 +0200 |
commit | 272464fac03859636383f1d9eeafe8af56470ab1 (patch) | |
tree | 47c0b05ecc83866c03e3af5da5a5edb66ed9de88 /src/coopgammad.c | |
parent | Fix reading of uninitialised value (diff) | |
download | coopgammad-272464fac03859636383f1d9eeafe8af56470ab1.tar.gz coopgammad-272464fac03859636383f1d9eeafe8af56470ab1.tar.bz2 coopgammad-272464fac03859636383f1d9eeafe8af56470ab1.tar.xz |
Fix bugs
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/coopgammad.c')
-rw-r--r-- | src/coopgammad.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/coopgammad.c b/src/coopgammad.c index 83352e0..1276189 100644 --- a/src/coopgammad.c +++ b/src/coopgammad.c @@ -419,14 +419,13 @@ static enum init_status initialise(int foreground, int keep_stderr, int query) static void destroy(int full) { if (full) - disconnect_all(); - - if (full) - close_socket(socketpath); - - if (full && (outputs != NULL)) - restore_gamma(); - + { + disconnect_all(); + close_socket(socketpath); + free(argv0_real); + if (outputs != NULL) + restore_gamma(); + } state_destroy(); free(socketpath); if (full && (pidpath != NULL)) @@ -618,7 +617,11 @@ static char* reexecute(void) destroy(0); +#if !defined(USE_VALGRIND) execlp(argv0_real ? argv0_real : argv0, argv0, "- ", statefile, NULL); +#else + execlp("valgrind", "valgrind", "--leak-check=full", argv0_real ? argv0_real : argv0, "- ", statefile, NULL); +#endif saved_errno = errno; free(argv0_real), argv0_real = NULL; errno = saved_errno; |