#define _GNU_SOURCE 1 #include #include #include #include #include static int do_test (void) { int result = 0; char buf[100]; wchar_t tmp[3]; tmp[0] = '8'; tmp[1] = '1'; tmp[2] = 0; /* GCC does not know the result of wcstof so cannot see that the snprintf output is not truncated. */ DIAG_PUSH_NEEDS_COMMENT; #if __GNUC_PREREQ (7, 0) DIAG_IGNORE_NEEDS_COMMENT (7.0, "-Wformat-truncation"); #endif snprintf (buf, 100, "%S = %f", tmp, wcstof (tmp, NULL)); DIAG_POP_NEEDS_COMMENT; printf ("\"%s\" -> %s\n", buf, strcmp (buf, "81 = 81.000000") == 0 ? "okay" : "buggy"); result |= strcmp (buf, "81 = 81.000000") != 0; return result; } #include