diff options
Diffstat (limited to 'stdio-common/tst-sprintf.c')
-rw-r--r-- | stdio-common/tst-sprintf.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/stdio-common/tst-sprintf.c b/stdio-common/tst-sprintf.c index afbacd9037..b20561ebfd 100644 --- a/stdio-common/tst-sprintf.c +++ b/stdio-common/tst-sprintf.c @@ -11,9 +11,30 @@ main (void) if (sprintf (buf, "%.0ls", L"foo") != 0 || strlen (buf) != 0) { - puts ("sprintf (buf, \"%.0ls\", L\"foo\") produced some output\n"); + puts ("sprintf (buf, \"%.0ls\", L\"foo\") produced some output"); result = 1; } +#define SIZE (1024*70000) +#define STR(x) #x + + char *dst = malloc (SIZE + 1); + + if (dst == NULL) + { + puts ("memory allocation failure"); + result = 1; + } + else + { + sprintf (dst, "%*s", SIZE, ""); + if (strnlen (dst, SIZE + 1) != SIZE) + { + puts ("sprintf (dst, \"%*s\", " STR(SIZE) ", \"\") did not produce enough output"); + result = 1; + } + free (dst); + } + return result; } |