Skip to content

Commit 616a24b

Browse files
committed
Add error handling to property setting
1 parent d819106 commit 616a24b

File tree

2 files changed

+49
-17
lines changed

2 files changed

+49
-17
lines changed

src/thread/SDL_thread.c

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -405,9 +405,18 @@ SDL_Thread *SDL_CreateThreadRuntime(SDL_ThreadFunction fn,
405405
SDL_FunctionPointer pfnEndThread)
406406
{
407407
const SDL_PropertiesID props = SDL_CreateProperties();
408-
SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_ENTRY_FUNCTION_POINTER, (void *) fn);
409-
SDL_SetStringProperty(props, SDL_PROP_THREAD_CREATE_NAME_STRING, name);
410-
SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_USERDATA_POINTER, userdata);
408+
if (!props) {
409+
return NULL;
410+
}
411+
412+
bool ok = SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_ENTRY_FUNCTION_POINTER, (void *) fn);
413+
ok &= SDL_SetStringProperty(props, SDL_PROP_THREAD_CREATE_NAME_STRING, name);
414+
ok &= SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_USERDATA_POINTER, userdata);
415+
if (!ok) {
416+
SDL_DestroyProperties(props);
417+
return NULL;
418+
}
419+
411420
SDL_Thread *thread = SDL_CreateThreadWithPropertiesRuntime(props, pfnBeginThread, pfnEndThread);
412421
SDL_DestroyProperties(props);
413422
return thread;
@@ -417,10 +426,19 @@ SDL_Thread *SDL_CreateThreadRuntime(SDL_ThreadFunction fn,
417426
SDL_Thread *SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, size_t stacksize, void *userdata)
418427
{
419428
const SDL_PropertiesID props = SDL_CreateProperties();
420-
SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_ENTRY_FUNCTION_POINTER, (void *) fn);
421-
SDL_SetStringProperty(props, SDL_PROP_THREAD_CREATE_NAME_STRING, name);
422-
SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_USERDATA_POINTER, userdata);
423-
SDL_SetNumberProperty(props, SDL_PROP_THREAD_CREATE_STACKSIZE_NUMBER, (Sint64) stacksize);
429+
if (!props) {
430+
return NULL;
431+
}
432+
433+
bool ok = SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_ENTRY_FUNCTION_POINTER, (void *) fn);
434+
ok &= SDL_SetStringProperty(props, SDL_PROP_THREAD_CREATE_NAME_STRING, name);
435+
ok &= SDL_SetPointerProperty(props, SDL_PROP_THREAD_CREATE_USERDATA_POINTER, userdata);
436+
ok &= SDL_SetNumberProperty(props, SDL_PROP_THREAD_CREATE_STACKSIZE_NUMBER, (Sint64) stacksize);
437+
if (!ok) {
438+
SDL_DestroyProperties(props);
439+
return NULL;
440+
}
441+
424442
SDL_Thread *thread = SDL_CreateThreadWithProperties(props);
425443
SDL_DestroyProperties(props);
426444
return thread;

src/video/SDL_video.c

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2603,12 +2603,19 @@ SDL_Window *SDL_CreateWindow(const char *title, int w, int h, SDL_WindowFlags fl
26032603
{
26042604
SDL_Window *window;
26052605
SDL_PropertiesID props = SDL_CreateProperties();
2606+
if (!props) {
2607+
return NULL;
2608+
}
2609+
bool ok = true;
26062610
if (title && *title) {
2607-
SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, title);
2611+
ok &= SDL_SetStringProperty(props, SDL_PROP_WINDOW_CREATE_TITLE_STRING, title);
2612+
}
2613+
ok &= SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, w);
2614+
ok &= SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, h);
2615+
ok &= SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_FLAGS_NUMBER, flags);
2616+
if (!ok) {
2617+
return NULL;
26082618
}
2609-
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, w);
2610-
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, h);
2611-
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_FLAGS_NUMBER, flags);
26122619
window = SDL_CreateWindowWithProperties(props);
26132620
SDL_DestroyProperties(props);
26142621
return window;
@@ -2618,19 +2625,26 @@ SDL_Window *SDL_CreatePopupWindow(SDL_Window *parent, int offset_x, int offset_y
26182625
{
26192626
SDL_Window *window;
26202627
SDL_PropertiesID props = SDL_CreateProperties();
2628+
if (!props) {
2629+
return NULL;
2630+
}
26212631

26222632
// Popups must specify either the tooltip or popup menu window flags
26232633
if (!(flags & (SDL_WINDOW_TOOLTIP | SDL_WINDOW_POPUP_MENU))) {
26242634
SDL_SetError("Popup windows must specify either the 'SDL_WINDOW_TOOLTIP' or the 'SDL_WINDOW_POPUP_MENU' flag");
26252635
return NULL;
26262636
}
26272637

2628-
SDL_SetPointerProperty(props, SDL_PROP_WINDOW_CREATE_PARENT_POINTER, parent);
2629-
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_X_NUMBER, offset_x);
2630-
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_Y_NUMBER, offset_y);
2631-
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, w);
2632-
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, h);
2633-
SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_FLAGS_NUMBER, flags);
2638+
bool ok = SDL_SetPointerProperty(props, SDL_PROP_WINDOW_CREATE_PARENT_POINTER, parent);
2639+
ok &= SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_X_NUMBER, offset_x);
2640+
ok &= SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_Y_NUMBER, offset_y);
2641+
ok &= SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_WIDTH_NUMBER, w);
2642+
ok &= SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_HEIGHT_NUMBER, h);
2643+
ok &= SDL_SetNumberProperty(props, SDL_PROP_WINDOW_CREATE_FLAGS_NUMBER, flags);
2644+
if (!ok) {
2645+
SDL_DestroyProperties(props);
2646+
return NULL;
2647+
}
26342648
window = SDL_CreateWindowWithProperties(props);
26352649
SDL_DestroyProperties(props);
26362650
return window;

0 commit comments

Comments
 (0)