diff --git a/timidity/timidity.c b/timidity/timidity.c
index f7aba09b61a4cda303835ee66948c8aaa4a5aad7..262ccb1ad5c3327c08af9ed6e53c43afb6771dc2 100644
--- a/timidity/timidity.c
+++ b/timidity/timidity.c
@@ -982,6 +982,10 @@ static int set_gus_patchconf(char *name, int line,
 	{
 	    ctl->cmsg(CMSG_ERROR, VERB_NORMAL,
 		      "%s: line %d: Syntax error", name, line);
+#ifdef SET_GUS_PATCHCONF_COMMENT
+        if(old_name != NULL)
+            free(old_name);
+#endif
 	    return 1;
 	}
 	tone->name = safe_strdup(opts[0]);
@@ -1034,6 +1038,13 @@ static int set_gus_patchconf(char *name, int line,
     {
 	int err;
 	if((err = set_gus_patchconf_opts(name, line, opts[j], tone)) != 0)
+    {
+#ifdef SET_GUS_PATCHCONF_COMMENT
+        if(old_name != NULL)
+            free(old_name);
+#endif
+            return err;
+    }
 	    return err;
     }
 #ifdef SET_GUS_PATCHCONF_COMMENT