diff --git a/libobs/obs-data.c b/libobs/obs-data.c index 71c10d02c..55d7366d1 100644 --- a/libobs/obs-data.c +++ b/libobs/obs-data.c @@ -1748,16 +1748,18 @@ typedef void *(*get_data_t)(obs_data_item_t *); static inline const char *data_item_get_string(obs_data_item_t *item, get_data_t get_data) { - return item_valid(item, OBS_DATA_STRING) && get_data(item) - ? get_data(item) - : ""; + const char *str; + + return item_valid(item, OBS_DATA_STRING) && (str = get_data(item)) ? str + : ""; } static inline long long item_int(struct obs_data_item *item, get_data_t get_data) { - if (item && get_data(item)) { - struct obs_data_number *num = get_data(item); + struct obs_data_number *num; + + if (item && (num = get_data(item))) { return (num->type == OBS_DATA_NUM_INT) ? num->int_val : (long long)num->double_val; @@ -1776,8 +1778,9 @@ static inline long long data_item_get_int(obs_data_item_t *item, static inline double item_double(struct obs_data_item *item, get_data_t get_data) { - if (item && get_data(item)) { - struct obs_data_number *num = get_data(item); + struct obs_data_number *num; + + if (item && (num = get_data(item))) { return (num->type == OBS_DATA_NUM_INT) ? (double)num->int_val : num->double_val; } @@ -1795,8 +1798,10 @@ static inline double data_item_get_double(obs_data_item_t *item, static inline bool data_item_get_bool(obs_data_item_t *item, get_data_t get_data) { - return item_valid(item, OBS_DATA_BOOLEAN) && get_data(item) - ? *(bool *)get_data(item) + bool *data; + + return item_valid(item, OBS_DATA_BOOLEAN) && (data = get_data(item)) + ? *data : false; }