summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
authorKacper Michajłow <kasper93@gmail.com>2023-10-22 19:38:58 +0200
committersfan5 <sfan5@live.de>2023-10-23 20:33:51 +0200
commit1805681aaba22aa19a27ecfdb639c983d91f83e6 (patch)
tree755dfebed879c474f6f55b5e7b6efbf66b5693c9 /player
parent907443686242dfb9636ac5b604581f484e5fca7f (diff)
downloadmpv-1805681aaba22aa19a27ecfdb639c983d91f83e6.tar.bz2
mpv-1805681aaba22aa19a27ecfdb639c983d91f83e6.tar.xz
m_option: initialize m_option_value union properly
C standard says that `= {0}` activates and initializes first member of union. We expect whole union to be zeroed, it is used as default value. Initialize union with one zeroed default instance to ensure proper init. Fixes: #12711
Diffstat (limited to 'player')
-rw-r--r--player/client.c6
-rw-r--r--player/command.c8
2 files changed, 8 insertions, 6 deletions
diff --git a/player/client.c b/player/client.c
index 176d49ef75..a14d2e99a3 100644
--- a/player/client.c
+++ b/player/client.c
@@ -1402,7 +1402,7 @@ static void getproperty_fn(void *arg)
struct getproperty_request *req = arg;
const struct m_option *type = get_mp_type_get(req->format);
- union m_option_value xdata = {0};
+ union m_option_value xdata = m_option_value_default;
void *data = req->data ? req->data : &xdata;
int err = -1;
@@ -1560,6 +1560,8 @@ int mpv_observe_property(mpv_handle *ctx, uint64_t userdata,
.type = type,
.change_ts = 1, // force initial event
.refcount = 1,
+ .value = m_option_value_default,
+ .value_ret = m_option_value_default,
};
ctx->properties_change_ts += 1;
MP_TARRAY_APPEND(ctx, ctx->properties, ctx->num_properties, prop);
@@ -1682,7 +1684,7 @@ static void send_client_property_changes(struct mpv_handle *ctx)
bool changed = false;
if (prop->format) {
const struct m_option *type = prop->type;
- union m_option_value val = {0};
+ union m_option_value val = m_option_value_default;
struct getproperty_request req = {
.mpctx = ctx->mpctx,
.name = prop->name,
diff --git a/player/command.c b/player/command.c
index bfacc04282..fd298dba5b 100644
--- a/player/command.c
+++ b/player/command.c
@@ -3490,7 +3490,7 @@ static int mp_property_option_info(void *ctx, struct m_property *prop,
return M_PROPERTY_UNKNOWN;
const struct m_option *opt = co->opt;
- union m_option_value def = {0};
+ union m_option_value def = m_option_value_default;
const void *def_ptr = m_config_get_co_default(mpctx->mconfig, co);
if (def_ptr && opt->type->size > 0)
memcpy(&def, def_ptr, opt->type->size);
@@ -4801,7 +4801,7 @@ static void cmd_cycle_values(void *p)
return;
}
- union m_option_value curval = {0};
+ union m_option_value curval = m_option_value_default;
r = mp_property_do(name, M_PROPERTY_GET, &curval, mpctx);
if (r <= 0) {
show_property_status(cmd, name, r);
@@ -4810,7 +4810,7 @@ static void cmd_cycle_values(void *p)
int current = -1;
for (int n = first; n < cmd->num_args; n++) {
- union m_option_value val = {0};
+ union m_option_value val = m_option_value_default;
if (m_option_parse(mpctx->log, &prop, bstr0(name),
bstr0(cmd->args[n].v.s), &val) < 0)
continue;
@@ -5214,7 +5214,7 @@ static void cmd_change_list(void *p)
return;
}
- union m_option_value val = {0};
+ union m_option_value val = m_option_value_default;
if (mp_property_do(name, M_PROPERTY_GET, &val, mpctx) <= 0) {
set_osd_msg(mpctx, osdl, osd_duration, "Could not read: '%s'", name);
cmd->success = false;