diff --git a/src/Utils.cpp b/src/Utils.cpp index 23c64236..bf2a3973 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -48,22 +48,28 @@ obs_bounds_type getBoundsTypeFromName(QString name) { return boundTypeNames.key(name); } -obs_data_array_t* Utils::StringListToArray(char** strings, char* key) { - if (!strings) - return obs_data_array_create(); - +obs_data_array_t* Utils::StringListToArray(char** strings, const char* key) { obs_data_array_t* list = obs_data_array_create(); - char* value = ""; - for (int i = 0; value != nullptr; i++) { - value = strings[i]; + if (!strings || !key) { + return list; // empty list + } + + size_t index = 0; + char* value = nullptr; + + do { + value = strings[index]; OBSDataAutoRelease item = obs_data_create(); obs_data_set_string(item, key, value); - if (value) + if (value) { obs_data_array_push_back(list, item); - } + } + + index++; + } while (value != nullptr); return list; } @@ -72,8 +78,9 @@ obs_data_array_t* Utils::GetSceneItems(obs_source_t* source) { obs_data_array_t* items = obs_data_array_create(); OBSScene scene = obs_scene_from_source(source); - if (!scene) + if (!scene) { return nullptr; + } obs_scene_enum_items(scene, []( obs_scene_t* scene, @@ -91,8 +98,9 @@ obs_data_array_t* Utils::GetSceneItems(obs_source_t* source) { } obs_data_t* Utils::GetSceneItemData(obs_sceneitem_t* item) { - if (!item) + if (!item) { return nullptr; + } vec2 pos; obs_sceneitem_get_pos(item, &pos); diff --git a/src/Utils.h b/src/Utils.h index e9f73e89..b22a824c 100644 --- a/src/Utils.h +++ b/src/Utils.h @@ -33,7 +33,7 @@ with this program. If not, see class Utils { public: - static obs_data_array_t* StringListToArray(char** strings, char* key); + static obs_data_array_t* StringListToArray(char** strings, const char* key); static obs_data_array_t* GetSceneItems(obs_source_t* source); static obs_data_t* GetSceneItemData(obs_sceneitem_t* item); static obs_sceneitem_t* GetSceneItemFromName(