summaryrefslogtreecommitdiff
path: root/Build/source/libs/gd/libgd-src/src/snprintf.c
blob: 33d1b42c81d1ff94865e72e8aac6bd7fe076c547 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/* Provide a snprintf on Windows for older Visual Studio builds.
 * VS2013 and older do not support C99 snprintf(). The subsitute _snprintf()
 * does not correctly NUL-terminate buffers in case of overflow.
 * This implementation emulates the ISO C99 snprintf() for VS2013 and older.
 */

#if defined(_MSC_VER) && _MSC_VER < 1900

#include <stdio.h>
#include <stdarg.h>

int snprintf(char* buf, size_t len, const char* fmt, ...)
{
  int n;
  va_list ap;
  va_start(ap, fmt);

  n = _vscprintf(fmt, ap);
  vsnprintf_s(buf, len, _TRUNCATE, fmt, ap);

  va_end(ap);
  return n;
}

#endif