summaryrefslogtreecommitdiffstats
path: root/m_property.c
diff options
context:
space:
mode:
Diffstat (limited to 'm_property.c')
-rw-r--r--m_property.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/m_property.c b/m_property.c
index 4952c3a29c..dc856966f3 100644
--- a/m_property.c
+++ b/m_property.c
@@ -44,7 +44,7 @@ static int do_action(const m_option_t *prop_list, const char *name,
memcpy(base, name, len);
base[len] = 0;
prop = m_option_list_find(prop_list, base);
- struct m_property_action ka = {
+ struct m_property_action_arg ka = {
.key = sep + 1,
.action = action,
.arg = arg,
@@ -105,6 +105,7 @@ int m_property_do(const m_option_t *prop_list, const char *name,
return r;
}
case M_PROPERTY_SWITCH: {
+ struct m_property_switch_arg *sarg = arg;
if ((r = do_action(prop_list, name, M_PROPERTY_SWITCH, arg, ctx)) !=
M_PROPERTY_NOT_IMPLEMENTED)
return r;
@@ -113,10 +114,7 @@ int m_property_do(const m_option_t *prop_list, const char *name,
return M_PROPERTY_NOT_IMPLEMENTED;
if ((r = do_action(prop_list, name, M_PROPERTY_GET, &val, ctx)) <= 0)
return r;
- bool wrap = opt.type == &m_option_type_choice ||
- opt.type == &m_option_type_flag;
- do_action(prop_list, name, M_PROPERTY_GET_WRAP, &wrap, ctx);
- opt.type->add(&opt, &val, *(double*)arg, wrap);
+ opt.type->add(&opt, &val, sarg->inc, sarg->wrap);
r = do_action(prop_list, name, M_PROPERTY_SET, &val, ctx);
m_option_free(&opt, &val);
return r;