mirror of
https://github.com/Ryujinx/SDL.git
synced 2024-12-23 23:25:31 +00:00
make sure SDL_vsnprintf() nul terminates if it is using _vsnprintf
The change makes sure that SDL_vsnprintf() nul terminates if it is using _vsnprintf() for the job. I made this patch for Watcom, whose _vsnprintf() doesn't guarantee nul termination. The preprocessor check can be extended to windows in general too, if required. Closes bug #3769.
This commit is contained in:
parent
c11ae93aed
commit
652d59fb3b
|
@ -1319,7 +1319,18 @@ SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_VSNPRINTF
|
#if defined(HAVE_LIBC) && defined(__WATCOMC__)
|
||||||
|
/* _vsnprintf() doesn't ensure nul termination */
|
||||||
|
int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap)
|
||||||
|
{
|
||||||
|
int retval;
|
||||||
|
if (!fmt) fmt = "";
|
||||||
|
retval = _vsnprintf(text, maxlen, fmt, ap);
|
||||||
|
if (maxlen > 0) text[maxlen-1] = '\0';
|
||||||
|
if (retval < 0) retval = (int) maxlen;
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
#elif defined(HAVE_VSNPRINTF)
|
||||||
int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap)
|
int SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap)
|
||||||
{
|
{
|
||||||
if (!fmt) {
|
if (!fmt) {
|
||||||
|
|
Loading…
Reference in a new issue