From 7890be6e7d2658fd14c793c77be4d91a461abce8 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Fri, 15 Jul 2011 17:20:16 +0000 Subject: 2011-07-15 Yufeng Zhang * libc/stdio/vfwprintf.c (wcvt): Add a new parameter len of type int. *length is set to the value of (rev - digits) regardless of whether _MB_CAPABLE is defined or not. Replace BUF with len in calling _mbsnrtowcs_r and also in the loop where _MB_CAPABLE is not defined. (_VFWPRINTF_R): Call wcvt with an extra argument. Call wcvt again with allocated new buffer if buf is not large enough for the conversion. * testsuite/newlib.stdio/stdio.exp: New. * testsuite/newlib.stdio/swprintf.c: Likewise. --- newlib/testsuite/newlib.stdio/swprintf.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 newlib/testsuite/newlib.stdio/swprintf.c (limited to 'newlib/testsuite/newlib.stdio/swprintf.c') diff --git a/newlib/testsuite/newlib.stdio/swprintf.c b/newlib/testsuite/newlib.stdio/swprintf.c new file mode 100644 index 000000000..b925da487 --- /dev/null +++ b/newlib/testsuite/newlib.stdio/swprintf.c @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2011 by ARM Ltd. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software + * is freely granted, provided that this notice is preserved. + */ + +#include +#include +#include +#include +#include "check.h" + +int main() +{ +#if defined(INTEGER_ONLY) || defined(NO_FLOATING_POINT) + +#else + char cbuf[512]; + wchar_t wcbuf[512], wcbuf2[512]; + double val = 1E+308; + snprintf(cbuf, 512, "%.*f", 3, val); + swprintf(wcbuf, 512, L"%.*f", 3, val); + mbstowcs(wcbuf2, cbuf, 512); + + CHECK (wcscmp(wcbuf, wcbuf2) == 0); +#endif + + exit (0); +} -- cgit v1.2.3