This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
[Please don't CC me. I'm reading the mailing list anyway. Thanks] On Nov 6 13:53, Terry Guo wrote: > Thanks. Here is updated patch. Is this one OK? It's fine from my POV. Bin? Corinna > > BR, > Terry > diff --git a/newlib/libc/stdio/nano-vfprintf_i.c b/newlib/libc/stdio/nano-vfprintf_i.c > index b1b0d1d..b75a142 100644 > --- a/newlib/libc/stdio/nano-vfprintf_i.c > +++ b/newlib/libc/stdio/nano-vfprintf_i.c > @@ -211,15 +211,15 @@ number: > case 's': > cp = GET_ARG (N, *ap, char_ptr_t); > /* Precision gives the maximum number of chars to be written from a > - string, and take prec == -1 into consideration. */ > - if ((u_int)(pdata->size = strlen (cp)) > (u_int)(pdata->prec)) > - pdata->size = pdata->prec; > - /* Below code is kept for reading. The check is redundant because > - pdata->prec will be set to pdata->size if it is -1 previously. */ > -#if 0 > - if (pdata->prec > pdata->size) > -#endif > - pdata->prec = pdata->size; > + string, and take prec == -1 into consideration. > + Use normal Newlib approach here to support case where cp is not > + nul-terminated. */ > + char *p = memchr (cp, 0, pdata->prec); > + > + if (p != NULL) > + pdata->prec = p - cp; > + > + pdata->size = pdata->prec; > goto non_number_nosign; > default: > /* "%?" prints ?, unless ? is NUL. */ > diff --git a/newlib/testsuite/newlib.stdio/nulprintf.c b/newlib/testsuite/newlib.stdio/nulprintf.c > new file mode 100644 > index 0000000..5e4131b > --- /dev/null > +++ b/newlib/testsuite/newlib.stdio/nulprintf.c > @@ -0,0 +1,17 @@ > +/* > + * Copyright (C) 2014 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 <stdio.h> > +#include "check.h" > + > +const char m[8] = {'M','M','M','M','M','M','M','M'}; > + > +int main() > +{ > + printf ("%.*s\n", 8, m); > + exit (0); > +} -- Corinna Vinschen Cygwin Maintainer Red Hat
Attachment:
pgpR1ti0Vw8VV.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |