Fix memory handling of pid2name result

This plugs a leak.
diff --git a/proc.c b/proc.c
index 6b0cf97..e601e15 100644
--- a/proc.c
+++ b/proc.c
@@ -440,13 +440,15 @@
 	 * easily free it, untracing is more work.  */
 	if ((filename = pid2name(pid)) == NULL
 	    || trace_pid(pid) < 0) {
+	fail:
 		free(filename);
 		return -1;
 	}
 
 	proc = open_program(filename, pid);
 	if (proc == NULL)
-		return -1;
+		goto fail;
+	free(filename);
 	trace_set_options(proc);
 
 	return 0;