From 6e0e39b79f1a024fb8dd98101c5fc63a8ec0d8ed Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 22 Nov 2019 18:21:33 +0100 Subject: input: change mp_cmd.original from bstr to cstr No reason to have this as bstr, just makes everything more complex. Also clear mp_cmd.sender when it's copied. Otherwise it would be a dangling pointer. Apparently it's never set to non-NULL in this situation, but this is cleaner anyway. --- input/cmd.c | 7 ++++--- input/cmd.h | 2 +- input/input.c | 4 ++-- player/command.c | 4 ++-- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/input/cmd.c b/input/cmd.c index 91d171ccaa..093e97dbb4 100644 --- a/input/cmd.c +++ b/input/cmd.c @@ -413,7 +413,7 @@ static struct mp_cmd *parse_cmd_str(struct mp_log *log, void *tmp, } bstr orig = {ctx->start.start, ctx->str.start - ctx->start.start}; - cmd->original = bstrdup(cmd, bstr_strip(orig)); + cmd->original = bstrto0(cmd, bstr_strip(orig)); *str = ctx->str; return cmd; @@ -449,7 +449,7 @@ mp_cmd_t *mp_input_parse_cmd_str(struct mp_log *log, bstr str, const char *loc) *list = (struct mp_cmd) { .name = (char *)mp_cmd_list.name, .def = &mp_cmd_list, - .original = bstrdup(list, original), + .original = bstrto0(list, original), }; talloc_steal(list, cmd); struct mp_cmd_arg arg = {0}; @@ -509,7 +509,8 @@ mp_cmd_t *mp_cmd_clone(mp_cmd_t *cmd) ret->args[i].type = cmd->args[i].type; m_option_copy(ret->args[i].type, &ret->args[i].v, &cmd->args[i].v); } - ret->original = bstrdup(ret, cmd->original); + ret->original = talloc_strdup(ret, cmd->original); + ret->sender = NULL; ret->key_name = talloc_strdup(ret, ret->key_name); ret->key_text = talloc_strdup(ret, ret->key_text); diff --git a/input/cmd.h b/input/cmd.h index 83791589ee..72824dffc8 100644 --- a/input/cmd.h +++ b/input/cmd.h @@ -99,7 +99,7 @@ typedef struct mp_cmd { struct mp_cmd_arg *args; int nargs; int flags; // mp_cmd_flags bitfield - bstr original; + char *original; char *input_section; bool is_up_down : 1; bool is_up : 1; diff --git a/input/input.c b/input/input.c index 89c2571d2b..a9ee42338e 100644 --- a/input/input.c +++ b/input/input.c @@ -282,8 +282,8 @@ static void append_bind_info(struct input_ctx *ictx, char **pmsg, char *msg = *pmsg; struct mp_cmd *cmd = mp_input_parse_cmd(ictx, bstr0(bind->cmd), bind->location); - bstr stripped = cmd ? cmd->original : bstr0(bind->cmd); - msg = talloc_asprintf_append(msg, " '%.*s'", BSTR_P(stripped)); + char *stripped = cmd ? cmd->original : bind->cmd; + msg = talloc_asprintf_append(msg, " '%s'", stripped); if (!cmd) msg = talloc_asprintf_append(msg, " (invalid)"); if (strcmp(bind->owner->section, "default") != 0) diff --git a/player/command.c b/player/command.c index 00ebddf343..85a44e3603 100644 --- a/player/command.c +++ b/player/command.c @@ -4819,8 +4819,8 @@ static void cmd_add_cycle(void *p) char *property = cmd->args[0].v.s; if (cmd->cmd->repeated && !check_property_autorepeat(property, mpctx)) { - MP_VERBOSE(mpctx, "Dropping command '%.*s' from auto-repeated key.\n", - BSTR_P(cmd->cmd->original)); + MP_VERBOSE(mpctx, "Dropping command '%s' from auto-repeated key.\n", + cmd->cmd->original); return; } -- cgit v1.2.3