From 9693e0f57ac75bd5c5d8313dd933989dd3e64d31 Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 6 Nov 2015 21:12:20 +0100 Subject: Remove some VLAs They are evil and should be eradicated. Some of these were pretty dumb anyway. There are probably some more around in platform specific code or other code not enabled by default on Linux. --- options/m_config.c | 16 ++++------------ options/m_property.c | 10 ++++------ 2 files changed, 8 insertions(+), 18 deletions(-) (limited to 'options') diff --git a/options/m_config.c b/options/m_config.c index c39f3ab41a..0f112dcefb 100644 --- a/options/m_config.c +++ b/options/m_config.c @@ -115,7 +115,6 @@ static int parse_profile(struct m_config *config, const struct m_option *opt, static int show_profile(struct m_config *config, bstr param) { struct m_profile *p; - int i, j; if (!param.len) return M_OPT_MISSING_PARAM; if (!(p = m_config_get_profile(config, param))) { @@ -126,25 +125,18 @@ static int show_profile(struct m_config *config, bstr param) MP_INFO(config, "Profile %s: %s\n", p->name, p->desc ? p->desc : ""); config->profile_depth++; - for (i = 0; i < p->num_opts; i++) { - char spc[config->profile_depth + 1]; - for (j = 0; j < config->profile_depth; j++) - spc[j] = ' '; - spc[config->profile_depth] = '\0'; - - MP_INFO(config, "%s%s=%s\n", spc, p->opts[2 * i], p->opts[2 * i + 1]); + for (int i = 0; i < p->num_opts; i++) { + MP_INFO(config, "%*s%s=%s\n", config->profile_depth, "", + p->opts[2 * i], p->opts[2 * i + 1]); if (config->profile_depth < MAX_PROFILE_DEPTH && !strcmp(p->opts[2*i], "profile")) { char *e, *list = p->opts[2 * i + 1]; while ((e = strchr(list, ','))) { int l = e - list; - char tmp[l+1]; if (!l) continue; - memcpy(tmp, list, l); - tmp[l] = '\0'; - show_profile(config, bstr0(tmp)); + show_profile(config, (bstr){list, e - list}); list = e + 1; } if (list[0] != '\0') diff --git a/options/m_property.c b/options/m_property.c index 9af3c91081..9318d5b7d2 100644 --- a/options/m_property.c +++ b/options/m_property.c @@ -49,14 +49,12 @@ static struct m_property *m_property_list_find(const struct m_property *list, static int do_action(const struct m_property *prop_list, const char *name, int action, void *arg, void *ctx) { - const char *sep; struct m_property *prop; struct m_property_action_arg ka; - if ((sep = strchr(name, '/')) && sep[1]) { - int len = sep - name; - char base[len + 1]; - memcpy(base, name, len); - base[len] = 0; + const char *sep = strchr(name, '/'); + if (sep && sep[1]) { + char base[128]; + snprintf(base, sizeof(base), "%.*s", (int)(sep - name), name); prop = m_property_list_find(prop_list, base); ka = (struct m_property_action_arg) { .key = sep + 1, -- cgit v1.2.3