mirror of
https://github.com/git/git.git
synced 2026-08-09 01:21:47 +00:00
config: propagate launch_editor() failure in show_editor()
show_editor() calls launch_editor() to open the user's editor on the configuration file, but discards the return value and unconditionally returns 0 (success). When the editor fails to launch (e.g., $EDITOR is not found, or the editor exits with a nonzero status), the caller receives no indication that anything went wrong. This affects "git config edit" and "git config --edit": the command silently succeeds even when the editor could not be started. In contrast, other editor-launching paths in git (such as "git commit" and "git rebase --edit-todo") properly propagate editor failures and exit with an error. Check the return value and propagate the failure by returning -1. The two callers (cmd_config_edit at line 1315 and the legacy cmd_config at line 1478) both propagate this return to handle_builtin, which translates negative returns into an error exit. Pointed out by Coverity. Assisted-by: Claude Opus 4.6 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
aed6c66954
commit
3bf6fd75ed
@@ -1313,7 +1313,10 @@ static int show_editor(struct config_location_options *opts)
|
||||
else if (errno != EEXIST)
|
||||
die_errno(_("cannot create configuration file %s"), config_file);
|
||||
}
|
||||
launch_editor(config_file, NULL, NULL);
|
||||
if (launch_editor(config_file, NULL, NULL)) {
|
||||
free(config_file);
|
||||
return -1;
|
||||
}
|
||||
free(config_file);
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user