diff --git a/include/SDL3/SDL_error.h b/include/SDL3/SDL_error.h index 93a7865760..3839faedd3 100644 --- a/include/SDL3/SDL_error.h +++ b/include/SDL3/SDL_error.h @@ -105,12 +105,14 @@ extern DECLSPEC const char *SDLCALL SDL_GetError(void); /** * Clear any previous error message for this thread. * + * \returns 0 + * * \since This function is available since SDL 3.0.0. * * \sa SDL_GetError * \sa SDL_SetError */ -extern DECLSPEC void SDLCALL SDL_ClearError(void); +extern DECLSPEC int SDLCALL SDL_ClearError(void); /** * \name Internal error functions diff --git a/src/SDL.c b/src/SDL.c index f3faf9d59d..1b3912f8c6 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -400,7 +400,7 @@ int SDL_InitSubSystem(Uint32 flags) (void)flags_initialized; /* make static analysis happy, since this only gets used in error cases. */ - return 0; + return SDL_ClearError(); quit_and_error: SDL_QuitSubSystem(flags_initialized); diff --git a/src/SDL_error.c b/src/SDL_error.c index f01fd3c88d..4133d95462 100644 --- a/src/SDL_error.c +++ b/src/SDL_error.c @@ -78,13 +78,14 @@ const char *SDL_GetError(void) } } -void SDL_ClearError(void) +int SDL_ClearError(void) { SDL_error *error = SDL_GetErrBuf(SDL_FALSE); if (error) { error->error = SDL_ErrorCodeNone; } + return 0; } /* Very common errors go here */ diff --git a/src/dynapi/SDL_dynapi_procs.h b/src/dynapi/SDL_dynapi_procs.h index b5a24f1b60..bc27e29904 100644 --- a/src/dynapi/SDL_dynapi_procs.h +++ b/src/dynapi/SDL_dynapi_procs.h @@ -107,7 +107,7 @@ SDL_DYNAPI_PROC(void,SDL_CleanupTLS,(void),(),) SDL_DYNAPI_PROC(int,SDL_ClearAudioStream,(SDL_AudioStream *a),(a),return) SDL_DYNAPI_PROC(int,SDL_ClearClipboardData,(void),(),return) SDL_DYNAPI_PROC(void,SDL_ClearComposition,(void),(),) -SDL_DYNAPI_PROC(void,SDL_ClearError,(void),(),) +SDL_DYNAPI_PROC(int,SDL_ClearError,(void),(),return) SDL_DYNAPI_PROC(int,SDL_ClearProperty,(SDL_PropertiesID a, const char *b),(a,b),return) SDL_DYNAPI_PROC(void,SDL_CloseAudioDevice,(SDL_AudioDeviceID a),(a),) SDL_DYNAPI_PROC(void,SDL_CloseCamera,(SDL_Camera *a),(a),)