diff --git a/src/rcfile.c b/src/rcfile.c
index c4611bfde8d8542a2e297dd6075da3d2dbe5d846..741305b4ca84b227d4dd2a635882335df7da526d 100644
--- a/src/rcfile.c
+++ b/src/rcfile.c
@@ -479,7 +479,6 @@ void parse_binding(char *ptr, bool dobind)
 
 	if (!menu) {
 	    rcfile_error(N_("Function '%s' does not exist in menu '%s'"), funcptr, menuptr);
-	    free(newsc);
 	    goto free_copy;
 	}
 
@@ -489,7 +488,6 @@ void parse_binding(char *ptr, bool dobind)
 	/* Do not allow rebinding a frequent escape-sequence starter: Esc [. */
 	if (newsc->meta && newsc->keycode == 91) {
 	    rcfile_error(N_("Sorry, keystroke \"%s\" may not be rebound"), newsc->keystr);
-	    free(newsc);
 	    goto free_copy;
 	}
 #ifdef DEBUG
@@ -525,6 +523,7 @@ void parse_binding(char *ptr, bool dobind)
     }
 
   free_copy:
+    free(newsc);
     free(keycopy);
 }