diff --git a/libs/pbd/system_exec.cc b/libs/pbd/system_exec.cc index b11ef1ce0e..ef51b7af3d 100644 --- a/libs/pbd/system_exec.cc +++ b/libs/pbd/system_exec.cc @@ -195,10 +195,13 @@ SystemExec::SystemExec (std::string command, const std::map s { init (); make_argp_escaped(command, subs); - if (!find_file (Searchpath (Glib::getenv ("PATH")), argp[0], cmd)) { - // not found in path - use as-is - cmd = argp[0]; + + if (find_file (Searchpath (Glib::getenv ("PATH")), argp[0], cmd)) { + // argp[0] exists in $PATH` - set it to the actual path where it was found + free (argp[0]); + argp[0] = strdup(cmd.c_str ()); } + // else argp[0] not found in path - leave it as-is, it might be an absolute path // Glib::find_program_in_path () is only available in Glib >= 2.28 // cmd = Glib::find_program_in_path (argp[0]); @@ -281,13 +284,13 @@ SystemExec::~SystemExec () terminate (); if (envp) { for (int i=0;envp[i];++i) { - free(envp[i]); + free(envp[i]); } free (envp); } if (argp) { for (int i=0;argp[i];++i) { - free(argp[i]); + free(argp[i]); } free (argp); }