+2008-09-02 Eric Blake <ebb9@byu.net>
+
+ vasnprintf-posix: handle large precision via %.*d
+ * lib/vasnprintf.c (VASNPRINTF): Don't pass precision to snprintf
+ when handling it ourselves.
+ * tests/test-vasnprintf-posix.c (test_function): Add test.
+ * tests/test-snprintf-posix.h (test_function): Likewise.
+ * tests/test-sprintf-posix.h (test_function): Likewise.
+ * tests/test-vasprintf-posix.c (test_function): Likewise.
+ Reported by Alain Guibert.
+
2008-09-01 Eric Blake <ebb9@byu.net>
c-stack: make configure-time check more robust
abort ();
prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int;
}
- if (dp->precision_arg_index != ARG_NONE)
+ if (!prec_ourselves && dp->precision_arg_index != ARG_NONE)
{
if (!(a.arg[dp->precision_arg_index].type == TYPE_INT))
abort ();
ASSERT (retval == strlen (result));
}
+ {
+ char result[5000];
+ int retval =
+ my_snprintf (result, sizeof (result), "%.*d %d", 4000, 1234567, 99);
+ size_t i;
+ ASSERT (result != NULL);
+ for (i = 0; i < 4000 - 7; i++)
+ ASSERT (result[i] == '0');
+ ASSERT (strcmp (result + 4000 - 7, "1234567 99") == 0);
+ ASSERT (retval == strlen (result));
+ }
+
{
char result[5000];
int retval =
ASSERT (retval == strlen (result));
}
+ {
+ char result[5000];
+ int retval =
+ my_sprintf (result, "%.*d %d", 4000, 1234567, 99);
+ size_t i;
+ ASSERT (result != NULL);
+ for (i = 0; i < 4000 - 7; i++)
+ ASSERT (result[i] == '0');
+ ASSERT (strcmp (result + 4000 - 7, "1234567 99") == 0);
+ ASSERT (retval == strlen (result));
+ }
+
{
char result[5000];
int retval =
free (result);
}
+ {
+ size_t length;
+ char *result =
+ my_asnprintf (NULL, &length, "%.*d %d", 4000, 1234567, 99);
+ size_t i;
+ ASSERT (result != NULL);
+ for (i = 0; i < 4000 - 7; i++)
+ ASSERT (result[i] == '0');
+ ASSERT (strcmp (result + 4000 - 7, "1234567 99") == 0);
+ ASSERT (length == strlen (result));
+ free (result);
+ }
+
{
size_t length;
char *result =
free (result);
}
+ {
+ char *result;
+ int retval =
+ my_asprintf (&result, "%.*d %d", 4000, 1234567, 99);
+ size_t i;
+ ASSERT (result != NULL);
+ for (i = 0; i < 4000 - 7; i++)
+ ASSERT (result[i] == '0');
+ ASSERT (strcmp (result + 4000 - 7, "1234567 99") == 0);
+ ASSERT (retval == strlen (result));
+ free (result);
+ }
+
{
char *result;
int retval =