diff options
Diffstat (limited to 'REORG.TODO/stdio-common/bug22.c')
-rw-r--r-- | REORG.TODO/stdio-common/bug22.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/REORG.TODO/stdio-common/bug22.c b/REORG.TODO/stdio-common/bug22.c new file mode 100644 index 0000000000..b26399acb7 --- /dev/null +++ b/REORG.TODO/stdio-common/bug22.c @@ -0,0 +1,56 @@ +/* BZ #5424 */ +#include <stdio.h> +#include <errno.h> + +/* INT_MAX + 1 */ +#define N 2147483648 + +/* (INT_MAX / 2) + 2 */ +#define N2 1073741825 + +/* INT_MAX - 3 */ +#define N3 2147483644 + +#define STRINGIFY(S) #S +#define MAKE_STR(S) STRINGIFY(S) + +#define SN MAKE_STR(N) +#define SN2 MAKE_STR(N2) +#define SN3 MAKE_STR(N3) + +static int +do_test (void) +{ + int ret; + + FILE *fp = fopen ("/dev/null", "w"); + if (fp == NULL) + { + puts ("cannot open /dev/null"); + return 1; + } + + ret = fprintf (fp, "%" SN "d", 1); + printf ("ret = %d\n", ret); + if (ret != -1 || errno != EOVERFLOW) + return 1; + + ret = fprintf (fp, "%." SN "d", 1); + printf ("ret = %d\n", ret); + if (ret != -1 || errno != EOVERFLOW) + return 1; + + ret = fprintf (fp, "%." SN3 "d", 1); + printf ("ret = %d\n", ret); + if (ret != -1 || errno != EOVERFLOW) + return 1; + + ret = fprintf (fp, "%" SN2 "d%" SN2 "d", 1, 1); + printf ("ret = %d\n", ret); + + return ret != -1 || errno != EOVERFLOW; +} + +#define TIMEOUT 60 +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" |