SDL: use SDL_InvalidParamError or SDL_assert instead of custom SDL_SetError

From ebdd5366762d45a6510678a6802e3ccab113a416 Mon Sep 17 00:00:00 2001
From: pionere <[EMAIL REDACTED]>
Date: Mon, 17 Jan 2022 16:26:02 +0100
Subject: [PATCH] use SDL_InvalidParamError or SDL_assert instead of custom
 SDL_SetError

---
 src/audio/SDL_audiocvt.c                |  4 +---
 src/core/winrt/SDL_winrtapp_xaml.cpp    |  2 +-
 src/events/SDL_mouse.c                  |  2 +-
 src/hidapi/libusb/hid.c                 |  8 ++------
 src/loadso/os2/SDL_sysloadso.c          |  2 +-
 src/loadso/windows/SDL_sysloadso.c      |  2 +-
 src/render/SDL_render.c                 | 22 +++++++++++-----------
 src/render/software/SDL_blendfillrect.c |  4 ++--
 src/render/software/SDL_blendline.c     |  2 +-
 src/render/software/SDL_blendpoint.c    |  4 ++--
 src/render/software/SDL_drawline.c      |  4 ++--
 src/render/software/SDL_drawpoint.c     |  4 ++--
 src/render/software/SDL_render_sw.c     |  2 +-
 src/thread/generic/SDL_syscond.c        |  6 +++---
 src/thread/generic/SDL_sysmutex.c       |  6 +++---
 src/thread/generic/SDL_syssem.c         |  6 +++---
 src/thread/os2/SDL_sysmutex.c           |  6 +++---
 src/thread/os2/SDL_syssem.c             |  6 +++---
 src/thread/psp/SDL_syscond.c            |  6 +++---
 src/thread/psp/SDL_sysmutex.c           |  6 +++---
 src/thread/psp/SDL_syssem.c             |  6 +++---
 src/thread/pthread/SDL_syscond.c        |  8 ++++----
 src/thread/pthread/SDL_sysmutex.c       |  6 +++---
 src/thread/pthread/SDL_syssem.c         |  8 ++++----
 src/thread/stdcpp/SDL_syscond.cpp       | 15 +++++----------
 src/thread/stdcpp/SDL_sysmutex.cpp      | 11 ++++-------
 src/thread/vita/SDL_syscond.c           |  6 +++---
 src/thread/vita/SDL_sysmutex.c          |  6 +++---
 src/thread/vita/SDL_syssem.c            |  6 +++---
 src/thread/windows/SDL_syscond_cv.c     |  8 ++++----
 src/thread/windows/SDL_sysmutex.c       | 12 ++++++------
 src/thread/windows/SDL_syssem.c         | 16 ++++++++--------
 src/video/SDL_fillrect.c                | 10 +++++-----
 src/video/SDL_pixels.c                  |  2 +-
 src/video/SDL_surface.c                 |  6 +++---
 src/video/SDL_video.c                   |  2 +-
 36 files changed, 109 insertions(+), 123 deletions(-)

diff --git a/src/audio/SDL_audiocvt.c b/src/audio/SDL_audiocvt.c
index 31e4e224dfe..147a9d134c4 100644
--- a/src/audio/SDL_audiocvt.c
+++ b/src/audio/SDL_audiocvt.c
@@ -930,9 +930,7 @@ SDL_AddAudioCVTFilter(SDL_AudioCVT *cvt, const SDL_AudioFilter filter)
     if (cvt->filter_index >= SDL_AUDIOCVT_MAX_FILTERS) {
         return SDL_SetError("Too many filters needed for conversion, exceeded maximum of %d", SDL_AUDIOCVT_MAX_FILTERS);
     }
-    if (filter == NULL) {
-        return SDL_SetError("Audio filter pointer is NULL");
-    }
+    SDL_assert(filter != NULL);
     cvt->filters[cvt->filter_index++] = filter;
     cvt->filters[cvt->filter_index] = NULL; /* Moving terminator */
     return 0;
diff --git a/src/core/winrt/SDL_winrtapp_xaml.cpp b/src/core/winrt/SDL_winrtapp_xaml.cpp
index b64c5059124..69716e11d72 100644
--- a/src/core/winrt/SDL_winrtapp_xaml.cpp
+++ b/src/core/winrt/SDL_winrtapp_xaml.cpp
@@ -115,7 +115,7 @@ SDL_WinRTInitXAMLApp(int (*mainFunction)(int, char **), void * backgroundPanelAs
 
     // Make sure we have a valid XAML element (to draw onto):
     if ( ! backgroundPanelAsIInspectable) {
-        return SDL_SetError("'backgroundPanelAsIInspectable' can't be NULL");
+        return SDL_InvalidParamError("backgroundPanelAsIInspectable");
     }
 
     Platform::Object ^ backgroundPanel = reinterpret_cast<Object ^>((IInspectable *) backgroundPanelAsIInspectable);
diff --git a/src/events/SDL_mouse.c b/src/events/SDL_mouse.c
index 259ee9f20e8..a30c3dbc0f0 100644
--- a/src/events/SDL_mouse.c
+++ b/src/events/SDL_mouse.c
@@ -1029,7 +1029,7 @@ SDL_CreateColorCursor(SDL_Surface *surface, int hot_x, int hot_y)
     SDL_Cursor *cursor;
 
     if (!surface) {
-        SDL_SetError("Passed NULL cursor surface");
+        SDL_InvalidParamError("surface");
         return NULL;
     }
 
diff --git a/src/hidapi/libusb/hid.c b/src/hidapi/libusb/hid.c
index 5cc60bcbdca..c54746e4dbe 100644
--- a/src/hidapi/libusb/hid.c
+++ b/src/hidapi/libusb/hid.c
@@ -74,12 +74,8 @@ typedef struct _SDL_ThreadBarrier
 
 static int SDL_CreateThreadBarrier(SDL_ThreadBarrier *barrier, Uint32 count)
 {
-	if (barrier == NULL) {
-		return SDL_SetError("barrier must be non-NULL");
-	}
-	if (count == 0) {
-		return SDL_SetError("count must be > 0");
-	}
+	SDL_assert(barrier != NULL);
+	SDL_assert(count != 0);
 
 	barrier->mutex = SDL_CreateMutex();
 	if (barrier->mutex == NULL) {
diff --git a/src/loadso/os2/SDL_sysloadso.c b/src/loadso/os2/SDL_sysloadso.c
index 5e6971252ad..2b96848ac85 100644
--- a/src/loadso/os2/SDL_sysloadso.c
+++ b/src/loadso/os2/SDL_sysloadso.c
@@ -41,7 +41,7 @@ SDL_LoadObject(const char *sofile)
     PSZ     pszModName;
 
     if (!sofile) {
-        SDL_SetError("NULL sofile");
+        SDL_InvalidParamError("sofile");
         return NULL;
     }
 
diff --git a/src/loadso/windows/SDL_sysloadso.c b/src/loadso/windows/SDL_sysloadso.c
index 7e5730a893d..d3c84042bbd 100644
--- a/src/loadso/windows/SDL_sysloadso.c
+++ b/src/loadso/windows/SDL_sysloadso.c
@@ -36,7 +36,7 @@ SDL_LoadObject(const char *sofile)
     LPTSTR tstr;
 
     if (!sofile) {
-        SDL_SetError("NULL sofile");
+        SDL_InvalidParamError("sofile");
         return NULL;
     }
     tstr = WIN_UTF8ToString(sofile);
diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c
index 03c2691d264..c2f100ac661 100644
--- a/src/render/SDL_render.c
+++ b/src/render/SDL_render.c
@@ -48,13 +48,13 @@ this should probably be removed at some point in the future.  --ryan. */
 
 #define CHECK_RENDERER_MAGIC(renderer, retval) \
     if (!renderer || renderer->magic != &renderer_magic) { \
-        SDL_SetError("Invalid renderer"); \
+        SDL_InvalidParamError("renderer"); \
         return retval; \
     }
 
 #define CHECK_TEXTURE_MAGIC(texture, retval) \
     if (!texture || texture->magic != &texture_magic) { \
-        SDL_SetError("Invalid texture"); \
+        SDL_InvalidParamError("texture"); \
         return retval; \
     }
 
@@ -1326,7 +1326,7 @@ SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface)
     CHECK_RENDERER_MAGIC(renderer, NULL);
 
     if (!surface) {
-        SDL_SetError("SDL_CreateTextureFromSurface() passed NULL surface");
+        SDL_InvalidParamError("SDL_CreateTextureFromSurface(): surface");
         return NULL;
     }
 
@@ -2694,7 +2694,7 @@ SDL_RenderDrawPoints(SDL_Renderer * renderer,
     CHECK_RENDERER_MAGIC(renderer, -1);
 
     if (!points) {
-        return SDL_SetError("SDL_RenderDrawPoints(): Passed NULL points");
+        return SDL_InvalidParamError("SDL_RenderDrawPoints(): points");
     }
     if (count < 1) {
         return 0;
@@ -2764,7 +2764,7 @@ SDL_RenderDrawPointsF(SDL_Renderer * renderer,
     CHECK_RENDERER_MAGIC(renderer, -1);
 
     if (!points) {
-        return SDL_SetError("SDL_RenderDrawPointsF(): Passed NULL points");
+        return SDL_InvalidParamError("SDL_RenderDrawPointsF(): points");
     }
     if (count < 1) {
         return 0;
@@ -2973,7 +2973,7 @@ SDL_RenderDrawLines(SDL_Renderer * renderer,
     CHECK_RENDERER_MAGIC(renderer, -1);
 
     if (!points) {
-        return SDL_SetError("SDL_RenderDrawLines(): Passed NULL points");
+        return SDL_InvalidParamError("SDL_RenderDrawLines(): points");
     }
     if (count < 2) {
         return 0;
@@ -3012,7 +3012,7 @@ SDL_RenderDrawLinesF(SDL_Renderer * renderer,
     CHECK_RENDERER_MAGIC(renderer, -1);
 
     if (!points) {
-        return SDL_SetError("SDL_RenderDrawLinesF(): Passed NULL points");
+        return SDL_InvalidParamError("SDL_RenderDrawLinesF(): points");
     }
     if (count < 2) {
         return 0;
@@ -3211,7 +3211,7 @@ SDL_RenderDrawRects(SDL_Renderer * renderer,
     CHECK_RENDERER_MAGIC(renderer, -1);
 
     if (!rects) {
-        return SDL_SetError("SDL_RenderDrawRects(): Passed NULL rects");
+        return SDL_InvalidParamError("SDL_RenderDrawRects(): rects");
     }
     if (count < 1) {
         return 0;
@@ -3241,7 +3241,7 @@ SDL_RenderDrawRectsF(SDL_Renderer * renderer,
     CHECK_RENDERER_MAGIC(renderer, -1);
 
     if (!rects) {
-        return SDL_SetError("SDL_RenderDrawRects(): Passed NULL rects");
+        return SDL_InvalidParamError("SDL_RenderDrawRectsF(): rects");
     }
     if (count < 1) {
         return 0;
@@ -3308,7 +3308,7 @@ SDL_RenderFillRects(SDL_Renderer * renderer,
     CHECK_RENDERER_MAGIC(renderer, -1);
 
     if (!rects) {
-        return SDL_SetError("SDL_RenderFillRects(): Passed NULL rects");
+        return SDL_InvalidParamError("SDL_RenderFillRects(): rects");
     }
     if (count < 1) {
         return 0;
@@ -3351,7 +3351,7 @@ SDL_RenderFillRectsF(SDL_Renderer * renderer,
     CHECK_RENDERER_MAGIC(renderer, -1);
 
     if (!rects) {
-        return SDL_SetError("SDL_RenderFillFRects(): Passed NULL rects");
+        return SDL_InvalidParamError("SDL_RenderFillRectsF(): rects");
     }
     if (count < 1) {
         return 0;
diff --git a/src/render/software/SDL_blendfillrect.c b/src/render/software/SDL_blendfillrect.c
index 5f49126550a..569c15058b6 100644
--- a/src/render/software/SDL_blendfillrect.c
+++ b/src/render/software/SDL_blendfillrect.c
@@ -220,7 +220,7 @@ SDL_BlendFillRect(SDL_Surface * dst, const SDL_Rect * rect,
     SDL_Rect clipped;
 
     if (!dst) {
-        return SDL_SetError("Passed NULL destination surface");
+        return SDL_InvalidParamError("SDL_BlendFillRect(): dst");
     }
 
     /* This function doesn't work on surfaces < 8 bpp */
@@ -291,7 +291,7 @@ SDL_BlendFillRects(SDL_Surface * dst, const SDL_Rect * rects, int count,
     int status = 0;
 
     if (!dst) {
-        return SDL_SetError("Passed NULL destination surface");
+        return SDL_InvalidParamError("SDL_BlendFillRects(): dst");
     }
 
     /* This function doesn't work on surfaces < 8 bpp */
diff --git a/src/render/software/SDL_blendline.c b/src/render/software/SDL_blendline.c
index c38c4425aaf..4921bf1010e 100644
--- a/src/render/software/SDL_blendline.c
+++ b/src/render/software/SDL_blendline.c
@@ -809,7 +809,7 @@ SDL_BlendLine(SDL_Surface * dst, int x1, int y1, int x2, int y2,
     BlendLineFunc func;
 
     if (!dst) {
-        return SDL_SetError("SDL_BlendLine(): Passed NULL destination surface");
+        return SDL_InvalidParamError("SDL_BlendLine(): dst");
     }
 
     func = SDL_CalculateBlendLineFunc(dst->format);
diff --git a/src/render/software/SDL_blendpoint.c b/src/render/software/SDL_blendpoint.c
index d5b662cce7e..613169b7bac 100644
--- a/src/render/software/SDL_blendpoint.c
+++ b/src/render/software/SDL_blendpoint.c
@@ -218,7 +218,7 @@ SDL_BlendPoint(SDL_Surface * dst, int x, int y, SDL_BlendMode blendMode, Uint8 r
                Uint8 g, Uint8 b, Uint8 a)
 {
     if (!dst) {
-        return SDL_SetError("Passed NULL destination surface");
+        return SDL_InvalidParamError("SDL_BlendPoint(): dst");
     }
 
     /* This function doesn't work on surfaces < 8 bpp */
@@ -287,7 +287,7 @@ SDL_BlendPoints(SDL_Surface * dst, const SDL_Point * points, int count,
     int status = 0;
 
     if (!dst) {
-        return SDL_SetError("Passed NULL destination surface");
+        return SDL_InvalidParamError("SDL_BlendPoints(): dst");
     }
 
     /* This function doesn't work on surfaces < 8 bpp */
diff --git a/src/render/software/SDL_drawline.c b/src/render/software/SDL_drawline.c
index 8dbd3d2199b..e309f161957 100644
--- a/src/render/software/SDL_drawline.c
+++ b/src/render/software/SDL_drawline.c
@@ -144,7 +144,7 @@ SDL_DrawLine(SDL_Surface * dst, int x1, int y1, int x2, int y2, Uint32 color)
     DrawLineFunc func;
 
     if (!dst) {
-        return SDL_SetError("SDL_DrawLine(): Passed NULL destination surface");
+        return SDL_InvalidParamError("SDL_DrawLine(): dst");
     }
 
     func = SDL_CalculateDrawLineFunc(dst->format);
@@ -173,7 +173,7 @@ SDL_DrawLines(SDL_Surface * dst, const SDL_Point * points, int count,
     DrawLineFunc func;
 
     if (!dst) {
-        return SDL_SetError("SDL_DrawLines(): Passed NULL destination surface");
+        return SDL_InvalidParamError("SDL_DrawLines(): dst");
     }
 
     func = SDL_CalculateDrawLineFunc(dst->format);
diff --git a/src/render/software/SDL_drawpoint.c b/src/render/software/SDL_drawpoint.c
index 999f015cd87..b99838ac621 100644
--- a/src/render/software/SDL_drawpoint.c
+++ b/src/render/software/SDL_drawpoint.c
@@ -30,7 +30,7 @@ int
 SDL_DrawPoint(SDL_Surface * dst, int x, int y, Uint32 color)
 {
     if (!dst) {
-        return SDL_SetError("Passed NULL destination surface");
+        return SDL_InvalidParamError("SDL_DrawPoint(): dst");
     }
 
     /* This function doesn't work on surfaces < 8 bpp */
@@ -71,7 +71,7 @@ SDL_DrawPoints(SDL_Surface * dst, const SDL_Point * points, int count,
     int x, y;
 
     if (!dst) {
-        return SDL_SetError("Passed NULL destination surface");
+        return SDL_InvalidParamError("SDL_DrawPoints(): dst");
     }
 
     /* This function doesn't work on surfaces < 8 bpp */
diff --git a/src/render/software/SDL_render_sw.c b/src/render/software/SDL_render_sw.c
index 0eb9b513b47..4d4d44644ed 100644
--- a/src/render/software/SDL_render_sw.c
+++ b/src/render/software/SDL_render_sw.c
@@ -994,7 +994,7 @@ SW_CreateRendererForSurface(SDL_Surface * surface)
     SW_RenderData *data;
 
     if (!surface) {
-        SDL_SetError("Can't create renderer for NULL surface");
+        SDL_InvalidParamError("surface");
         return NULL;
     }
 
diff --git a/src/thread/generic/SDL_syscond.c b/src/thread/generic/SDL_syscond.c
index 328e37c9041..59e8ce0760d 100644
--- a/src/thread/generic/SDL_syscond.c
+++ b/src/thread/generic/SDL_syscond.c
@@ -99,7 +99,7 @@ SDL_CondSignal_generic(SDL_cond * _cond)
 {
     SDL_cond_generic *cond = (SDL_cond_generic *)_cond;
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     /* If there are waiting threads not already signalled, then
@@ -124,7 +124,7 @@ SDL_CondBroadcast_generic(SDL_cond * _cond)
 {
     SDL_cond_generic *cond = (SDL_cond_generic *)_cond;
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     /* If there are waiting threads not already signalled, then
@@ -181,7 +181,7 @@ SDL_CondWaitTimeout_generic(SDL_cond * _cond, SDL_mutex * mutex, Uint32 ms)
     int retval;
 
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     /* Obtain the protection mutex, and increment the number of waiters.
diff --git a/src/thread/generic/SDL_sysmutex.c b/src/thread/generic/SDL_sysmutex.c
index 9028c726813..42965aa8bfd 100644
--- a/src/thread/generic/SDL_sysmutex.c
+++ b/src/thread/generic/SDL_sysmutex.c
@@ -78,7 +78,7 @@ SDL_LockMutex(SDL_mutex * mutex)
     SDL_threadID this_thread;
 
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     this_thread = SDL_ThreadID();
@@ -109,7 +109,7 @@ SDL_TryLockMutex(SDL_mutex * mutex)
     SDL_threadID this_thread;
 
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     this_thread = SDL_ThreadID();
@@ -139,7 +139,7 @@ SDL_mutexV(SDL_mutex * mutex)
     return 0;
 #else
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     /* If we don't own the mutex, we can't unlock it */
diff --git a/src/thread/generic/SDL_syssem.c b/src/thread/generic/SDL_syssem.c
index 93ce2952da4..c21ff196ad0 100644
--- a/src/thread/generic/SDL_syssem.c
+++ b/src/thread/generic/SDL_syssem.c
@@ -132,7 +132,7 @@ SDL_SemTryWait(SDL_sem * sem)
     int retval;
 
     if (!sem) {
-        return SDL_SetError("Passed a NULL semaphore");
+        return SDL_InvalidParamError("sem");
     }
 
     retval = SDL_MUTEX_TIMEDOUT;
@@ -152,7 +152,7 @@ SDL_SemWaitTimeout(SDL_sem * sem, Uint32 timeout)
     int retval;
 
     if (!sem) {
-        return SDL_SetError("Passed a NULL semaphore");
+        return SDL_InvalidParamError("sem");
     }
 
     /* A timeout of 0 is an easy case */
@@ -200,7 +200,7 @@ int
 SDL_SemPost(SDL_sem * sem)
 {
     if (!sem) {
-        return SDL_SetError("Passed a NULL semaphore");
+        return SDL_InvalidParamError("sem");
     }
 
     SDL_LockMutex(sem->count_lock);
diff --git a/src/thread/os2/SDL_sysmutex.c b/src/thread/os2/SDL_sysmutex.c
index 28986f6320e..984ae10fed6 100644
--- a/src/thread/os2/SDL_sysmutex.c
+++ b/src/thread/os2/SDL_sysmutex.c
@@ -73,7 +73,7 @@ SDL_LockMutex(SDL_mutex * mutex)
     HMTX  hMtx = (HMTX)mutex;
 
     if (hMtx == NULLHANDLE)
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
 
     ulRC = DosRequestMutexSem(hMtx, SEM_INDEFINITE_WAIT);
     if (ulRC != NO_ERROR) {
@@ -92,7 +92,7 @@ SDL_TryLockMutex(SDL_mutex * mutex)
     HMTX  hMtx = (HMTX)mutex;
 
     if (hMtx == NULLHANDLE)
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
 
     ulRC = DosRequestMutexSem(hMtx, SEM_IMMEDIATE_RETURN);
 
@@ -115,7 +115,7 @@ SDL_UnlockMutex(SDL_mutex * mutex)
     HMTX  hMtx = (HMTX)mutex;
 
     if (hMtx == NULLHANDLE)
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
 
     ulRC = DosReleaseMutexSem(hMtx);
     if (ulRC != NO_ERROR)
diff --git a/src/thread/os2/SDL_syssem.c b/src/thread/os2/SDL_syssem.c
index d2ede69911e..79bf0673f39 100644
--- a/src/thread/os2/SDL_syssem.c
+++ b/src/thread/os2/SDL_syssem.c
@@ -89,7 +89,7 @@ SDL_SemWaitTimeout(SDL_sem * sem, Uint32 timeout)
     ULONG cPost;
 
     if (sem == NULL)
-        return SDL_SetError("Passed a NULL sem");
+        return SDL_InvalidParamError("sem");
 
     if (timeout != SEM_INDEFINITE_WAIT)
         DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, &ulStartTime, sizeof(ULONG));
@@ -147,7 +147,7 @@ SDL_SemValue(SDL_sem * sem)
     ULONG ulRC;
 
     if (sem == NULL) {
-        SDL_SetError("Passed a NULL sem");
+        SDL_InvalidParamError("sem");
         return 0;
     }
 
@@ -167,7 +167,7 @@ SDL_SemPost(SDL_sem * sem)
     ULONG ulRC;
 
     if (sem == NULL)
-        return SDL_SetError("Passed a NULL sem");
+        return SDL_InvalidParamError("sem");
 
     ulRC = DosRequestMutexSem(sem->hMtx, SEM_INDEFINITE_WAIT);
     if (ulRC != NO_ERROR)
diff --git a/src/thread/psp/SDL_syscond.c b/src/thread/psp/SDL_syscond.c
index 5c98610af4b..02307ed9c2d 100644
--- a/src/thread/psp/SDL_syscond.c
+++ b/src/thread/psp/SDL_syscond.c
@@ -84,7 +84,7 @@ int
 SDL_CondSignal(SDL_cond * cond)
 {
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     /* If there are waiting threads not already signalled, then
@@ -108,7 +108,7 @@ int
 SDL_CondBroadcast(SDL_cond * cond)
 {
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     /* If there are waiting threads not already signalled, then
@@ -164,7 +164,7 @@ SDL_CondWaitTimeout(SDL_cond * cond, SDL_mutex * mutex, Uint32 ms)
     int retval;
 
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     /* Obtain the protection mutex, and increment the number of waiters.
diff --git a/src/thread/psp/SDL_sysmutex.c b/src/thread/psp/SDL_sysmutex.c
index 0adc16c0151..9e391629adf 100644
--- a/src/thread/psp/SDL_sysmutex.c
+++ b/src/thread/psp/SDL_sysmutex.c
@@ -84,7 +84,7 @@ SDL_TryLockMutex(SDL_mutex * mutex)
 #else
     SceInt32 res = 0;
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     res = sceKernelTryLockLwMutex(&mutex->lock, 1);
@@ -114,7 +114,7 @@ SDL_mutexP(SDL_mutex * mutex)
 #else
     SceInt32 res = 0;
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     res = sceKernelLockLwMutex(&mutex->lock, 1, NULL);
@@ -136,7 +136,7 @@ SDL_mutexV(SDL_mutex * mutex)
     SceInt32 res = 0;
 
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     res = sceKernelUnlockLwMutex(&mutex->lock, 1);
diff --git a/src/thread/psp/SDL_syssem.c b/src/thread/psp/SDL_syssem.c
index aaac5b68e93..640619cd980 100644
--- a/src/thread/psp/SDL_syssem.c
+++ b/src/thread/psp/SDL_syssem.c
@@ -82,7 +82,7 @@ int SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout)
     int res;
 
     if (sem == NULL) {
-        SDL_SetError("Passed a NULL sem");
+        SDL_InvalidParamError("sem");
         return 0;
     }
 
@@ -128,7 +128,7 @@ Uint32 SDL_SemValue(SDL_sem *sem)
     SceKernelSemaInfo info;
 
     if (sem == NULL) {
-        SDL_SetError("Passed a NULL sem");
+        SDL_InvalidParamError("sem");
         return 0;
     }
 
@@ -144,7 +144,7 @@ int SDL_SemPost(SDL_sem *sem)
     int res;
 
     if (sem == NULL) {
-        return SDL_SetError("Passed a NULL sem");
+        return SDL_InvalidParamError("sem");
     }
 
     res = sceKernelSignalSema(sem->semid, 1);
diff --git a/src/thread/pthread/SDL_syscond.c b/src/thread/pthread/SDL_syscond.c
index 5ebd415cc5d..c84ec7adae8 100644
--- a/src/thread/pthread/SDL_syscond.c
+++ b/src/thread/pthread/SDL_syscond.c
@@ -68,7 +68,7 @@ SDL_CondSignal(SDL_cond * cond)
     int retval;
 
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     retval = 0;
@@ -85,7 +85,7 @@ SDL_CondBroadcast(SDL_cond * cond)
     int retval;
 
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     retval = 0;
@@ -105,7 +105,7 @@ SDL_CondWaitTimeout(SDL_cond * cond, SDL_mutex * mutex, Uint32 ms)
     struct timespec abstime;
 
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
 #ifdef HAVE_CLOCK_GETTIME
@@ -148,7 +148,7 @@ int
 SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex)
 {
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     } else if (pthread_cond_wait(&cond->cond, &mutex->id) != 0) {
         return SDL_SetError("pthread_cond_wait() failed");
     }
diff --git a/src/thread/pthread/SDL_sysmutex.c b/src/thread/pthread/SDL_sysmutex.c
index 027a6cb41b3..c26982aed9a 100644
--- a/src/thread/pthread/SDL_sysmutex.c
+++ b/src/thread/pthread/SDL_sysmutex.c
@@ -85,7 +85,7 @@ SDL_LockMutex(SDL_mutex * mutex)
 #endif
 
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
 #if FAKE_RECURSIVE_MUTEX
@@ -122,7 +122,7 @@ SDL_TryLockMutex(SDL_mutex * mutex)
 #endif
 
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     retval = 0;
@@ -162,7 +162,7 @@ int
 SDL_UnlockMutex(SDL_mutex * mutex)
 {
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
 #if FAKE_RECURSIVE_MUTEX
diff --git a/src/thread/pthread/SDL_syssem.c b/src/thread/pthread/SDL_syssem.c
index 2c97ef4e514..9a0c888224a 100644
--- a/src/thread/pthread/SDL_syssem.c
+++ b/src/thread/pthread/SDL_syssem.c
@@ -73,7 +73,7 @@ SDL_SemTryWait(SDL_sem * sem)
     int retval;
 
     if (!sem) {
-        return SDL_SetError("Passed a NULL semaphore");
+        return SDL_InvalidParamError("sem");
     }
     retval = SDL_MUTEX_TIMEDOUT;
     if (sem_trywait(&sem->sem) == 0) {
@@ -88,7 +88,7 @@ SDL_SemWait(SDL_sem * sem)
     int retval;
 
     if (!sem) {
-        return SDL_SetError("Passed a NULL semaphore");
+        return SDL_InvalidParamError("sem");
     }
 
     do {
@@ -115,7 +115,7 @@ SDL_SemWaitTimeout(SDL_sem * sem, Uint32 timeout)
 #endif
 
     if (!sem) {
-        return SDL_SetError("Passed a NULL semaphore");
+        return SDL_InvalidParamError("sem");
     }
 
     /* Try the easy cases first */
@@ -195,7 +195,7 @@ SDL_SemPost(SDL_sem * sem)
     int retval;
 
     if (!sem) {
-        return SDL_SetError("Passed a NULL semaphore");
+        return SDL_InvalidParamError("sem");
     }
 
     retval = sem_post(&sem->sem);
diff --git a/src/thread/stdcpp/SDL_syscond.cpp b/src/thread/stdcpp/SDL_syscond.cpp
index 8aa26d73d93..90c38adba33 100644
--- a/src/thread/stdcpp/SDL_syscond.cpp
+++ b/src/thread/stdcpp/SDL_syscond.cpp
@@ -70,8 +70,7 @@ int
 SDL_CondSignal(SDL_cond * cond)
 {
     if (!cond) {
-        SDL_SetError("Passed a NULL condition variable");
-        return -1;
+        return SDL_InvalidParamError("cond");
     }
 
     cond->cpp_cond.notify_one();
@@ -84,8 +83,7 @@ int
 SDL_CondBroadcast(SDL_cond * cond)
 {
     if (!cond) {
-        SDL_SetError("Passed a NULL condition variable");
-        return -1;
+        return SDL_InvalidParamError("cond");
     }
 
     cond->cpp_cond.notify_all();
@@ -118,13 +116,11 @@ int
 SDL_CondWaitTimeout(SDL_cond * cond, SDL_mutex * mutex, Uint32 ms)
 {
     if (!cond) {
-        SDL_SetError("Passed a NULL condition variable");
-        return -1;
+        return SDL_InvalidParamError("cond");
     }
 
     if (!mutex) {
-        SDL_SetError("Passed a NULL mutex variable");
-        return -1;
+        return SDL_InvalidParamError("mutex");
     }
 
     try {
@@ -148,8 +144,7 @@ SDL_CondWaitTimeout(SDL_cond * cond, SDL_mutex * mutex, Uint32 ms)
             }
         }
     } catch (std::system_error & ex) {
-        SDL_SetError("unable to wait on a C++ condition variable: code=%d; %s", ex.code(), ex.what());
-        return -1;
+        return SDL_SetError("unable to wait on a C++ condition variable: code=%d; %s", ex.code(), ex.what());
     }
 }
 
diff --git a/src/thread/stdcpp/SDL_sysmutex.cpp b/src/thread/stdcpp/SDL_sysmutex.cpp
index 4146bc98d80..8288010463b 100644
--- a/src/thread/stdcpp/SDL_sysmutex.cpp
+++ b/src/thread/stdcpp/SDL_sysmutex.cpp
@@ -65,16 +65,14 @@ int
 SDL_mutexP(SDL_mutex * mutex)
 {
     if (mutex == NULL) {
-        SDL_SetError("Passed a NULL mutex");
-        return -1;
+        return SDL_InvalidParamError("mutex");
     }
 
     try {
         mutex->cpp_mutex.lock();
         return 0;
     } catch (std::system_error & ex) {
-        SDL_SetError("unable to lock a C++ mutex: code=%d; %s", ex.code(), ex.what());
-        return -1;
+        return SDL_SetError("unable to lock a C++ mutex: code=%d; %s", ex.code(), ex.what());
     }
 }
 
@@ -84,7 +82,7 @@ SDL_TryLockMutex(SDL_mutex * mutex)
 {
     int retval = 0;
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     if (mutex->cpp_mutex.try_lock() == false) {
@@ -99,8 +97,7 @@ int
 SDL_mutexV(SDL_mutex * mutex)
 {
     if (mutex == NULL) {
-        SDL_SetError("Passed a NULL mutex");
-        return -1;
+        return SDL_InvalidParamError("mutex");
     }
 
     mutex->cpp_mutex.unlock();
diff --git a/src/thread/vita/SDL_syscond.c b/src/thread/vita/SDL_syscond.c
index 799bc0ae1a9..c6e46c4754b 100644
--- a/src/thread/vita/SDL_syscond.c
+++ b/src/thread/vita/SDL_syscond.c
@@ -84,7 +84,7 @@ int
 SDL_CondSignal(SDL_cond * cond)
 {
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     /* If there are waiting threads not already signalled, then
@@ -108,7 +108,7 @@ int
 SDL_CondBroadcast(SDL_cond * cond)
 {
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     /* If there are waiting threads not already signalled, then
@@ -164,7 +164,7 @@ SDL_CondWaitTimeout(SDL_cond * cond, SDL_mutex * mutex, Uint32 ms)
     int retval;
 
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     /* Obtain the protection mutex, and increment the number of waiters.
diff --git a/src/thread/vita/SDL_sysmutex.c b/src/thread/vita/SDL_sysmutex.c
index a18705a61b4..6327182cce8 100644
--- a/src/thread/vita/SDL_sysmutex.c
+++ b/src/thread/vita/SDL_sysmutex.c
@@ -80,7 +80,7 @@ SDL_TryLockMutex(SDL_mutex * mutex)
 #else
     SceInt32 res = 0;
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     res = sceKernelTryLockLwMutex(&mutex->lock, 1);
@@ -110,7 +110,7 @@ SDL_mutexP(SDL_mutex * mutex)
 #else
     SceInt32 res = 0;
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     res = sceKernelLockLwMutex(&mutex->lock, 1, NULL);
@@ -132,7 +132,7 @@ SDL_mutexV(SDL_mutex * mutex)
     SceInt32 res = 0;
 
     if (mutex == NULL) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mutex");
     }
 
     res = sceKernelUnlockLwMutex(&mutex->lock, 1);
diff --git a/src/thread/vita/SDL_syssem.c b/src/thread/vita/SDL_syssem.c
index 34e4d9ca871..7fecd6ca2ff 100644
--- a/src/thread/vita/SDL_syssem.c
+++ b/src/thread/vita/SDL_syssem.c
@@ -83,7 +83,7 @@ int SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout)
        unsigned int res;
 
     if (sem == NULL) {
-        SDL_SetError("Passed a NULL sem");
+        SDL_InvalidParamError("sem");
         return 0;
     }
 
@@ -130,7 +130,7 @@ Uint32 SDL_SemValue(SDL_sem *sem)
     info.size = sizeof(info);
 
     if (sem == NULL) {
-        SDL_SetError("Passed a NULL sem");
+        SDL_InvalidParamError("sem");
         return 0;
     }
 
@@ -146,7 +146,7 @@ int SDL_SemPost(SDL_sem *sem)
     int res;
 
     if (sem == NULL) {
-        return SDL_SetError("Passed a NULL sem");
+        return SDL_InvalidParamError("sem");
     }
 
     res = sceKernelSignalSema(sem->semid, 1);
diff --git a/src/thread/windows/SDL_syscond_cv.c b/src/thread/windows/SDL_syscond_cv.c
index 89c1a17f496..54d34084f13 100644
--- a/src/thread/windows/SDL_syscond_cv.c
+++ b/src/thread/windows/SDL_syscond_cv.c
@@ -109,7 +109,7 @@ SDL_CondSignal_cv(SDL_cond * _cond)
 {
     SDL_cond_cv *cond = (SDL_cond_cv *)_cond;
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     pWakeConditionVariable(&cond->cond);
@@ -122,7 +122,7 @@ SDL_CondBroadcast_cv(SDL_cond * _cond)
 {
     SDL_cond_cv *cond = (SDL_cond_cv *)_cond;
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
 
     pWakeAllConditionVariable(&cond->cond);
@@ -138,10 +138,10 @@ SDL_CondWaitTimeout_cv(SDL_cond * _cond, SDL_mutex * _mutex, Uint32 ms)
     int ret;
 
     if (!cond) {
-        return SDL_SetError("Passed a NULL condition variable");
+        return SDL_InvalidParamError("cond");
     }
     if (!_mutex) {
-        return SDL_SetError("Passed a NULL mutex");
+        return SDL_InvalidParamError("mut

(Patch may be truncated, please check the link at the top of this post.)