diff --git a/libobs/obs-data.c b/libobs/obs-data.c index d76c25bcda564a5c331435658eff2c379b0041f1..7000e689f6b8b56ee87a7ca18da794bdf7bec480 100644 --- a/libobs/obs-data.c +++ b/libobs/obs-data.c @@ -309,8 +309,10 @@ void obs_data_erase(obs_data_t data, const char *name) { struct obs_data_item *item = get_item(data, name); - obs_data_item_detach(item); - obs_data_item_release(&item); + if (item) { + obs_data_item_detach(item); + obs_data_item_release(&item); + } } void obs_data_setstring(obs_data_t data, const char *name, const char *val) @@ -405,7 +407,7 @@ int obs_data_array_addref(obs_data_array_t array) return ++array->ref; } -static void obs_data_array_destroy(obs_data_array_t array) +static inline void obs_data_array_destroy(obs_data_array_t array) { for (size_t i = 0; i < array->objects.num; i++) obs_data_release(array->objects.array[i]); @@ -514,6 +516,7 @@ enum obs_data_type obs_data_item_gettype(obs_data_item_t item) void obs_data_item_setstring(obs_data_item_t *item, const char *val) { + if (!val) val = ""; obs_data_item_setdata(item, val, strlen(val)+1, OBS_DATA_STRING); }