summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2019-11-22 18:21:33 +0100
committerwm4 <wm4@nowhere>2019-11-23 01:18:49 +0100
commit6e0e39b79f1a024fb8dd98101c5fc63a8ec0d8ed (patch)
treea3debde472a6c400ae1bec940e2a8dee8753323f
parentdbb5dd7c33e8520ddec5eafc1118f66f854114af (diff)
downloadmpv-6e0e39b79f1a024fb8dd98101c5fc63a8ec0d8ed.tar.bz2
mpv-6e0e39b79f1a024fb8dd98101c5fc63a8ec0d8ed.tar.xz
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.
-rw-r--r--input/cmd.c7
-rw-r--r--input/cmd.h2
-rw-r--r--input/input.c4
-rw-r--r--player/command.c4
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;
}