blob: 82bbe061c756b5cfeaee00057a9508e98bc4e6e5 [file]
#include <stdio.h>
#include <wchar.h>
/* mingw-w64 headers */
#include "libtest.h"
int main() {
int i;
wchar_t buffer[11] = L"XXXXXXXXXX";
int ret;
mingw_test_init ();
ret = swprintf(buffer, 3, L"%ls", L"AAA");
if (ret >= 0 || wmemcmp(buffer, L"AA\0XXXXXXX", 10) != 0) {
fprintf(stderr, "ret: expected<0 got=%d\n", ret);
fprintf(stderr, "buffer:");
for (i = 0; i < 10; i++) {
fprintf(stderr, " 0x%02x", (int)(wint_t)buffer[i]);
}
fprintf(stderr, "\n");
return 1;
}
/* ISO C95+: output of 9 wide chars plus terminator must succeed when n=10.
* Regression for __mingw_vswprintf exact-fit check (retval == n-1). */
{
wchar_t exact[16] = L"XXXXXXXXXXXXXXX";
ret = swprintf(exact, 10, L".%8x", 0xd8c7bc89U);
if (ret != 9 || wcscmp(exact, L".d8c7bc89") != 0) {
fprintf(stderr, "exact-fit n=10: ret expected=9 got=%d\n", ret);
fprintf(stderr, "exact-fit buffer: %ls\n", exact);
return 1;
}
ret = swprintf(exact, 9, L".%8x", 0xd8c7bc89U);
if (ret >= 0) {
fprintf(stderr, "exact-fit n=9: ret expected<0 got=%d\n", ret);
return 1;
}
}
return 0;
}