2010-04-10 Bruno Haible <bruno@clisp.org>
+ vasnprintf: Add more tests.
+ * tests/test-vasnprintf-posix.c: Include <errno.h>.
+ (test_function): Test converting an invalid wide string.
+
vasnprintf: Correct handling of unconvertible wide string arguments.
* lib/vasnprintf.c (MAX_ROOM_NEEDED): New function, extracted from
VASNPRINTF.
#include "vasnprintf.h"
+#include <errno.h>
#include <float.h>
#include <stdarg.h>
#include <stddef.h>
}
}
#endif
+
+#if HAVE_WCHAR_T
+ /* Test that converting an invalid wchar_t[] to char[] fails with EILSEQ. */
+ {
+ static const wchar_t input[] = { (wchar_t) 1702057263, 114, 0 };
+ size_t length;
+ char *result = my_asnprintf (NULL, &length, "%ls %d", input, 99);
+ if (result == NULL)
+ ASSERT (errno == EILSEQ);
+ else
+ free (result);
+ }
+ {
+ static const wchar_t input[] = { (wchar_t) 1702057263, 114, 0 };
+ size_t length;
+ char *result = my_asnprintf (NULL, &length, "%3ls %d", input, 99);
+ if (result == NULL)
+ ASSERT (errno == EILSEQ);
+ else
+ free (result);
+ }
+ {
+ static const wchar_t input[] = { (wchar_t) 1702057263, 114, 0 };
+ size_t length;
+ char *result = my_asnprintf (NULL, &length, "%.1ls %d", input, 99);
+ if (result == NULL)
+ ASSERT (errno == EILSEQ);
+ else
+ free (result);
+ }
+ {
+ static const wchar_t input[] = { (wchar_t) 1702057263, 114, 0 };
+ size_t length;
+ char *result = my_asnprintf (NULL, &length, "%3.1ls %d", input, 99);
+ if (result == NULL)
+ ASSERT (errno == EILSEQ);
+ else
+ free (result);
+ }
+#endif
}
static char *