Skip to content

Commit f6f8f81

Browse files
committed
requesthandler: Guard against null canvas
1 parent 1088ec8 commit f6f8f81

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/requesthandler/RequestHandler_Scenes.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ RequestResult RequestHandler::SetCurrentProgramScene(const Request &request)
156156
return RequestResult::Error(statusCode, comment);
157157

158158
OBSCanvasAutoRelease canvas = obs_source_get_canvas(scene);
159-
if (!(obs_canvas_get_flags(canvas) & MAIN))
159+
if (!canvas || !(obs_canvas_get_flags(canvas) & MAIN))
160160
return RequestResult::Error(
161161
RequestStatus::InvalidResourceState,
162162
"The specified scene is not from the main canvas and cannot be set as the program scene.");
@@ -226,7 +226,7 @@ RequestResult RequestHandler::SetCurrentPreviewScene(const Request &request)
226226
return RequestResult::Error(statusCode, comment);
227227

228228
OBSCanvasAutoRelease canvas = obs_source_get_canvas(scene);
229-
if (!(obs_canvas_get_flags(canvas) & MAIN))
229+
if (!canvas || !(obs_canvas_get_flags(canvas) & MAIN))
230230
return RequestResult::Error(
231231
RequestStatus::InvalidResourceState,
232232
"The specified scene is not from the main canvas and cannot be set as the preview scene.");
@@ -301,6 +301,9 @@ RequestResult RequestHandler::RemoveScene(const Request &request)
301301
return RequestResult::Error(statusCode, comment);
302302

303303
OBSCanvasAutoRelease canvas = obs_source_get_canvas(scene);
304+
if (!canvas)
305+
return RequestResult::Error(RequestStatus::ResourceActionFailed, "Error getting canvas for the specified scene.");
306+
304307
if ((obs_canvas_get_flags(canvas) & MAIN) && Utils::Obs::NumberHelper::GetCanvasSceneCount(canvas) < 2)
305308
return RequestResult::Error(RequestStatus::NotEnoughResources,
306309
"You cannot remove the last scene in the collection.");

0 commit comments

Comments
 (0)