mprintf: use _snprintf() when compiled with VS2013 and older

To support floats and doubles when using these old compilers.

Before this patch, these tests most likely failed with them:
```
FAIL 557: 'curl_mprintf() testing' printf, unittest
FAIL 566: 'HTTP GET with CURLINFO_CONTENT_LENGTH_DOWNLOAD and 0 bytes transfer' HTTP, HTTP GET
FAIL 599: 'HTTP GET with progress callback and redirects changing content sizes' HTTP, HTTP POST, chunked Transfer-Encoding
FAIL 1148: 'progress-bar' HTTP, progressbar
```

Also:
- mention `_snprintf()` in the `_CRT_SECURE_NO_WARNINGS` comment.

Follow-up to 7de35515d9 #20218

Closes #20761
This commit is contained in:
Viktor Szakats 2026-02-27 00:38:07 +01:00
parent 00b215b894
commit fa8bd1cc09
No known key found for this signature in database
2 changed files with 4 additions and 1 deletions

View File

@ -90,7 +90,7 @@
/* Disable Visual Studio warnings: 4127 "conditional expression is constant" */
#pragma warning(disable:4127)
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS /* for getenv(), tests: sscanf() */
#define _CRT_SECURE_NO_WARNINGS /* for _snprintf(), getenv(), sscanf() */
#endif
#endif /* _MSC_VER */

View File

@ -688,6 +688,9 @@ static bool out_double(void *userp,
buffer if it reaches the max size so we do that here. */
work[BUFFSIZE - 1] = 0;
#endif
#elif defined(_MSC_VER) && (_MSC_VER < 1900)
_snprintf(work, BUFFSIZE, formatbuf, dnum);
work[BUFFSIZE - 1] = 0;
#else
/* float and double outputs do not work without snprintf support */
work[0] = 0;