aboutsummaryrefslogtreecommitdiff
path: root/vis-cmds.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2017-02-23 17:05:37 +0100
committerMarc André Tanner <mat@brain-dump.org>2017-02-23 17:05:37 +0100
commitd42a0df8f1b5e1438f8bb317410b995c8e72efa4 (patch)
tree5240bb879520b623fc34c53429fc48bf68e4b2e4 /vis-cmds.c
parent3027b4244a8bdcaff501e73d15452c5bdea1196e (diff)
downloadvis-d42a0df8f1b5e1438f8bb317410b995c8e72efa4.tar.gz
vis-d42a0df8f1b5e1438f8bb317410b995c8e72efa4.tar.xz
vis: unify error path of command registration functions
Diffstat (limited to 'vis-cmds.c')
-rw-r--r--vis-cmds.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/vis-cmds.c b/vis-cmds.c
index 5e286b1..5d0e230 100644
--- a/vis-cmds.c
+++ b/vis-cmds.c
@@ -10,6 +10,14 @@ typedef struct {
void *data;
} CmdUser;
+static void cmdfree(CmdUser *cmd) {
+ if (!cmd)
+ return;
+ free((char*)cmd->def.name);
+ free((char*)cmd->def.help);
+ free(cmd);
+}
+
bool vis_cmd_register(Vis *vis, const char *name, const char *help, void *data, CmdFunc *func) {
if (!name)
return false;
@@ -34,9 +42,7 @@ bool vis_cmd_register(Vis *vis, const char *name, const char *help, void *data,
}
return true;
err:
- free((char*)cmd->def.name);
- free((char*)cmd->def.help);
- free(cmd);
+ cmdfree(cmd);
return false;
}
@@ -50,9 +56,7 @@ bool vis_cmd_unregister(Vis *vis, const char *name) {
return false;
if (!map_delete(vis->usercmds, name))
return false;
- free((char*)cmd->def.name);
- free((char*)cmd->def.help);
- free(cmd);
+ cmdfree(cmd);
return true;
}