Skip to content

Commit 2b80cf0

Browse files
committed
test: Fix crt-test.c to be buildable in C++ mode
Make it work with both GCC on Linux, llvm-mingw, and MSVC.
1 parent e457f40 commit 2b80cf0

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

test/crt-test.c

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1717
*/
1818

19-
#ifdef __linux__
19+
#if defined(__linux__) && !defined(_GNU_SOURCE)
2020
#define _GNU_SOURCE
2121
#endif
2222
#include <stdio.h>
@@ -370,7 +370,7 @@ void test_strings() {
370370
}
371371
#endif /* !MSVCRT_DLL_NOANSI */
372372
#endif /* long double tests */
373-
snprintf(buf, sizeof(buf), "%"PRIx64" %"PRIx64" %"PRIx64" %"PRIx64" %"PRIx64" %"PRIx64" %"PRIx64" %"PRIx64" %"PRIx64" %"PRIx64, myconst + 0, myconst + 1, myconst + 2, myconst + 3, myconst + 4, myconst + 5, myconst + 6, myconst + 7, myconst + 8, myconst + 9);
373+
snprintf(buf, sizeof(buf), "%" PRIx64" %" PRIx64" %" PRIx64" %" PRIx64" %" PRIx64" %" PRIx64" %" PRIx64" %" PRIx64" %" PRIx64" %" PRIx64, myconst + 0, myconst + 1, myconst + 2, myconst + 3, myconst + 4, myconst + 5, myconst + 6, myconst + 7, myconst + 8, myconst + 9);
374374
TEST_STR(buf, "baadf00dcafe baadf00dcaff baadf00dcb00 baadf00dcb01 baadf00dcb02 baadf00dcb03 baadf00dcb04 baadf00dcb05 baadf00dcb06 baadf00dcb07");
375375
char fmt[10] = { '%', '+', '0', '5', 'd', '\0' };
376376
snprintf(buf, sizeof(buf), fmt, 42);
@@ -386,7 +386,7 @@ void test_strings() {
386386
TEST_STR(buf, "0002a");
387387

388388
uint64_t val0, val1, val2, val3, val4, val5, val6, val7, val8, val9;
389-
if (sscanf("baadf00dcafe baadf00dcaff baadf00dcb00 baadf00dcb01 baadf00dcb02 baadf00dcb03 baadf00dcb04 baadf00dcb05 baadf00dcb06 baadf00dcb07", "%"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64, &val0, &val1, &val2, &val3, &val4, &val5, &val6, &val7, &val8, &val9) != 10) {
389+
if (sscanf("baadf00dcafe baadf00dcaff baadf00dcb00 baadf00dcb01 baadf00dcb02 baadf00dcb03 baadf00dcb04 baadf00dcb05 baadf00dcb06 baadf00dcb07", "%" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64, &val0, &val1, &val2, &val3, &val4, &val5, &val6, &val7, &val8, &val9) != 10) {
390390
fails++;
391391
printf("sscanf failed\n");
392392
} else {
@@ -409,7 +409,7 @@ void test_strings() {
409409
tests++;
410410

411411
val0 = val1 = val2 = val3 = val4 = val5 = val6 = val7 = val8 = val9 = 0xff;
412-
if (vsscanf_wrap("baadf00dcafe baadf00dcaff baadf00dcb00 baadf00dcb01 baadf00dcb02 baadf00dcb03 baadf00dcb04 baadf00dcb05 baadf00dcb06 baadf00dcb07", "%"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64" %"SCNx64, &val0, &val1, &val2, &val3, &val4, &val5, &val6, &val7, &val8, &val9) != 10) {
412+
if (vsscanf_wrap("baadf00dcafe baadf00dcaff baadf00dcb00 baadf00dcb01 baadf00dcb02 baadf00dcb03 baadf00dcb04 baadf00dcb05 baadf00dcb06 baadf00dcb07", "%" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64" %" SCNx64, &val0, &val1, &val2, &val3, &val4, &val5, &val6, &val7, &val8, &val9) != 10) {
413413
fails++;
414414
printf("vsscanf failed\n");
415415
} else {
@@ -549,7 +549,8 @@ void test_parse_numbers() {
549549

550550
void test_environment() {
551551
int env_ok = 0;
552-
putenv("CRT_TEST_VAR=1");
552+
char buf1[] = "CRT_TEST_VAR=1";
553+
putenv(buf1);
553554
for (char **ptr = environ; *ptr; ptr++)
554555
if (!strcmp(*ptr, "CRT_TEST_VAR=1"))
555556
env_ok = 1;
@@ -559,7 +560,8 @@ void test_environment() {
559560
}
560561
tests++;
561562
env_ok = 0;
562-
putenv("CRT_TEST_VAR=2");
563+
char buf2[] = "CRT_TEST_VAR=2";
564+
putenv(buf2);
563565
for (char **ptr = environ; *ptr; ptr++)
564566
if (!strcmp(*ptr, "CRT_TEST_VAR=2"))
565567
env_ok = 1;
@@ -1992,10 +1994,10 @@ void test_win32_intrinsics() {
19921994
TEST_FUNC(InterlockedExchange(&value, 2), value, 2, 6);
19931995
TEST_FUNC(InterlockedCompareExchange(&value, 7, 1), value, 2, 2);
19941996
TEST_FUNC(InterlockedCompareExchange(&value, 5, 2), value, 5, 2);
1995-
TEST_FUNC_PTR(InterlockedExchangePointer(&ptr, ptr1), ptr, ptr1, NULL);
1997+
TEST_FUNC_PTR(InterlockedExchangePointer(&ptr, ptr1), ptr, ptr1, (void*)NULL);
19961998
TEST_FUNC_PTR(InterlockedExchangePointer(&ptr, ptr2), ptr, ptr2, ptr1);
19971999
TEST_FUNC_PTR(InterlockedCompareExchangePointer(&ptr, NULL, ptr1), ptr, ptr2, ptr2);
1998-
TEST_FUNC_PTR(InterlockedCompareExchangePointer(&ptr, NULL, ptr2), ptr, NULL, ptr2);
2000+
TEST_FUNC_PTR(InterlockedCompareExchangePointer(&ptr, NULL, ptr2), ptr, (void*)NULL, ptr2);
19992001
TEST_FUNC(InterlockedExchangeAdd64(&value64, 0x10000000000), value64, 0x10000000005, 5);
20002002
TEST_FUNC(InterlockedExchange64(&value64, 0x10000000000), value64, 0x10000000000, 0x10000000005);
20012003
TEST_FUNC(InterlockedCompareExchange64(&value64, 7, 1), value64, 0x10000000000, 0x10000000000);
@@ -2098,10 +2100,10 @@ void test_win32_intrinsics() {
20982100
TEST_FUNC(_InterlockedExchange(&value, 2), value, 2, 1);
20992101
TEST_FUNC(_InterlockedCompareExchange(&value, 7, 1), value, 2, 2);
21002102
TEST_FUNC(_InterlockedCompareExchange(&value, 0, 2), value, 0, 2);
2101-
TEST_FUNC_PTR(_InterlockedExchangePointer(&ptr, ptr1), ptr, ptr1, NULL);
2103+
TEST_FUNC_PTR(_InterlockedExchangePointer(&ptr, ptr1), ptr, ptr1, (void*)NULL);
21022104
TEST_FUNC_PTR(_InterlockedExchangePointer(&ptr, ptr2), ptr, ptr2, ptr1);
21032105
TEST_FUNC_PTR(_InterlockedCompareExchangePointer(&ptr, NULL, ptr1), ptr, ptr2, ptr2);
2104-
TEST_FUNC_PTR(_InterlockedCompareExchangePointer(&ptr, NULL, ptr2), ptr, NULL, ptr2);
2106+
TEST_FUNC_PTR(_InterlockedCompareExchangePointer(&ptr, NULL, ptr2), ptr, (void*)NULL, ptr2);
21052107
#ifdef _WIN64
21062108
TEST_FUNC(_InterlockedExchangeAdd64(&value64, 0x20000000000), value64, 0x20000000000, 0);
21072109
TEST_FUNC(_InterlockedExchange64(&value64, 0x10000000000), value64, 0x10000000000, 0x20000000000);

0 commit comments

Comments
 (0)