From 2a1660ab51e3d7dc87986e043bd0fdcd4951bf99 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sat, 4 Nov 2023 20:47:08 -0700 Subject: [PATCH] Additional cleanup for SDL_RWprintf() (thanks @sezero!) --- include/SDL3/SDL_rwops.h | 2 +- src/file/SDL_rwops.c | 14 ++++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/include/SDL3/SDL_rwops.h b/include/SDL3/SDL_rwops.h index 73e6557963..88495d1583 100644 --- a/include/SDL3/SDL_rwops.h +++ b/include/SDL3/SDL_rwops.h @@ -518,7 +518,7 @@ extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, const void *ptr, * \sa SDL_RWseek * \sa SDL_RWwrite */ -extern DECLSPEC size_t SDLCALL SDL_RWprintf(SDL_RWops *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...); +extern DECLSPEC size_t SDLCALL SDL_RWprintf(SDL_RWops *context, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); /** * Print to an SDL_RWops data stream. diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c index b6f943f1c6..3bfb969b47 100644 --- a/src/file/SDL_rwops.c +++ b/src/file/SDL_rwops.c @@ -812,14 +812,17 @@ size_t SDL_RWprintf(SDL_RWops *context, SDL_PRINTF_FORMAT_STRING const char *fmt { va_list ap; int size; - char *string = NULL; + char *string; size_t bytes; va_start(ap, fmt); size = SDL_vasprintf(&string, fmt, ap); va_end(ap); + if (size < 0) { + return 0; + } - bytes = SDL_RWwrite(context, string, size); + bytes = SDL_RWwrite(context, string, (size_t)size); SDL_free(string); return bytes; } @@ -827,12 +830,15 @@ size_t SDL_RWprintf(SDL_RWops *context, SDL_PRINTF_FORMAT_STRING const char *fmt size_t SDL_RWvprintf(SDL_RWops *context, const char *fmt, va_list ap) { int size; - char *string = NULL; + char *string; size_t bytes; size = SDL_vasprintf(&string, fmt, ap); + if (size < 0) { + return 0; + } - bytes = SDL_RWwrite(context, string, size); + bytes = SDL_RWwrite(context, string, (size_t)size); SDL_free(string); return bytes; }