diff --git a/src/node_internals.h b/src/node_internals.h index 0646727e1bf..8d073927b81 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -27,7 +27,17 @@ namespace node { #ifdef _WIN32 -# define snprintf _snprintf +// emulate snprintf() on windows, _snprintf() doesn't zero-terminate the buffer +// on overflow... +#include +inline static int snprintf(char* buf, unsigned int len, const char* fmt, ...) { + va_list ap; + va_start(ap, fmt); + int n = _vsprintf_p(buf, len, fmt, ap); + if (len) buf[len - 1] = '\0'; + va_end(ap); + return n; +} #endif #ifndef offset_of