diff --git a/src/requesthandler/RequestHandler_SceneItems.cpp b/src/requesthandler/RequestHandler_SceneItems.cpp index 4f25c7b2..78e72f59 100644 --- a/src/requesthandler/RequestHandler_SceneItems.cpp +++ b/src/requesthandler/RequestHandler_SceneItems.cpp @@ -232,8 +232,9 @@ RequestResult RequestHandler::DuplicateSceneItem(const Request& request) if (!destinationScene) return RequestResult::Error(statusCode, comment); } else { - destinationScene = obs_sceneitem_get_scene(sceneItem); - obs_scene_addref(destinationScene); + destinationScene = obs_scene_get_ref(obs_sceneitem_get_scene(sceneItem)); + if (!destinationScene) + return RequestResult::Error(RequestStatus::RequestProcessingFailed, "Internal error: Failed to get ref for scene of scene item."); } if (obs_sceneitem_is_group(sceneItem) && obs_sceneitem_get_scene(sceneItem) == destinationScene) { diff --git a/src/requesthandler/rpc/Request.cpp b/src/requesthandler/rpc/Request.cpp index cd55abeb..3458347b 100644 --- a/src/requesthandler/rpc/Request.cpp +++ b/src/requesthandler/rpc/Request.cpp @@ -264,18 +264,14 @@ obs_scene_t *Request::ValidateScene2(const std::string &keyName, RequestStatus:: comment = "The specified source is not a scene. (Is group)"; return nullptr; } - OBSScene ret = obs_group_from_source(sceneSource); - obs_scene_addref(ret); - return ret; + return obs_scene_get_ref(obs_group_from_source(sceneSource)); } else { if (filter == OBS_WEBSOCKET_SCENE_FILTER_GROUP_ONLY) { statusCode = RequestStatus::InvalidResourceType; comment = "The specified source is not a group. (Is scene)"; return nullptr; } - OBSScene ret = obs_scene_from_source(sceneSource); - obs_scene_addref(ret); - return ret; + return obs_scene_get_ref(obs_scene_from_source(sceneSource)); } }