Browse Source

fix param interface (#5797)

* param: fix bug when param value is changed to 'zero' for the first time, it won't be saved.

* param: revert incorrectly removed code.
sbg
Henry Zhang 8 years ago committed by Lorenz Meier
parent
commit
309c256e9e
  1. 5
      src/modules/systemlib/param/param.c

5
src/modules/systemlib/param/param.c

@ -543,6 +543,7 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_ @@ -543,6 +543,7 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_
.val.p = NULL,
.unsaved = false
};
params_changed = true;
/* add it to the array and sort */
utarray_push_back(param_values, &buf);
@ -556,12 +557,12 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_ @@ -556,12 +557,12 @@ param_set_internal(param_t param, const void *val, bool mark_saved, bool notify_
switch (param_type(param)) {
case PARAM_TYPE_INT32:
params_changed = s->val.i != *(int32_t *)val;
params_changed = params_changed || s->val.i != *(int32_t *)val;
s->val.i = *(int32_t *)val;
break;
case PARAM_TYPE_FLOAT:
params_changed = fabsf(s->val.f - * (float *)val) > FLT_EPSILON;
params_changed = params_changed || fabsf(s->val.f - * (float *)val) > FLT_EPSILON;
s->val.f = *(float *)val;
break;

Loading…
Cancel
Save