diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-02-17 12:08:34 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-02-17 12:08:34 +0100 |
| commit | d73c20b96c7a6315f1c6b3fb68865d9e87819255 (patch) | |
| tree | 159eefb2ef0bb478152f92a82ebb01821eb20a84 | |
| parent | 87cf9f433982e716ad4d18fedb43d9b0f30b325b (diff) | |
| download | vis-d73c20b96c7a6315f1c6b3fb68865d9e87819255.tar.gz vis-d73c20b96c7a6315f1c6b3fb68865d9e87819255.tar.xz | |
vis: cleanup error paths in key action handling code
| -rw-r--r-- | vis-modes.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/vis-modes.c b/vis-modes.c index 05cdc01..47d02c1 100644 --- a/vis-modes.c +++ b/vis-modes.c @@ -4,6 +4,14 @@ #include "text-motions.h" #include "util.h" +static void keyaction_free(KeyAction *action) { + if (!action) + return; + free((char*)action->name); + free((char*)action->help); + free(action); +} + KeyAction *vis_action_new(Vis *vis, const char *name, const char *help, KeyActionFunction *func, Arg arg) { KeyAction *action = calloc(1, sizeof *action); if (!action) @@ -18,9 +26,7 @@ KeyAction *vis_action_new(Vis *vis, const char *name, const char *help, KeyActio goto err; return action; err: - free((char*)action->name); - free((char*)action->help); - free(action); + keyaction_free(action); return NULL; } @@ -30,9 +36,7 @@ void vis_action_free(Vis *vis, KeyAction *action) { size_t len = array_length(&vis->actions_user); for (size_t i = 0; i < len; i++) { if (action == array_get_ptr(&vis->actions_user, i)) { - free((char*)action->name); - free((char*)action->help); - free(action); + keyaction_free(action); array_remove(&vis->actions_user, i); return; } |
