From 9dca07db30dbf589f5a7fd176b670a65b948858e Mon Sep 17 00:00:00 2001 From: Palana Date: Tue, 17 Feb 2015 12:08:08 +0100 Subject: [PATCH] libobs: Handle obs_scene_add failure Previously a NULL item would cause a crash when reading transform info. The crash can be reproduced by e.g. editing scenes.json so that two scenes contain each other. Example scenes.json: { "current_scene": "Scene", "sources": [ { "flags": 0, "id": "scene", "mixers": 0, "name": "Scene", "settings": { "items": [ { "align": 5, "bounds": { "x": 1440.0, "y": 900.0 }, "bounds_align": 0, "bounds_type": 2, "name": "Scene 2", "pos": { "x": 0.0, "y": 0.0 }, "rot": 0.0, "scale": { "x": 1.0, "y": 1.0 }, "visible": true } ] }, "sync": 0, "volume": 1.0 }, { "flags": 0, "id": "scene", "mixers": 0, "name": "Scene 2", "settings": { "items": [ { "align": 5, "bounds": { "x": 1.0, "y": 1.0 }, "bounds_align": 0, "bounds_type": 0, "name": "Scene", "pos": { "x": 854.0, "y": -520.0 }, "rot": 0.0, "scale": { "x": 1.75, "y": 1.7562724351882935 }, "visible": true } ] }, "sync": 0, "volume": 1.0 } ] } --- libobs/obs-scene.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libobs/obs-scene.c b/libobs/obs-scene.c index 540b3f5fc..2cc23130d 100644 --- a/libobs/obs-scene.c +++ b/libobs/obs-scene.c @@ -344,6 +344,14 @@ static void scene_load_item(struct obs_scene *scene, obs_data_t *item_data) } item = obs_scene_add(scene, source); + if (!item) { + blog(LOG_WARNING, "[scene_load_item] Could not add source '%s' " + "to scene '%s'!", + name, obs_source_get_name(scene->source)); + + obs_source_release(source); + return; + } obs_data_set_default_int(item_data, "align", OBS_ALIGN_TOP | OBS_ALIGN_LEFT);