This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc 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]

GNU C Library master sources branch master updated. glibc-2.16-ports-merge-393-g715a900


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  715a900c9085907fa749589bf738b192b1a2bda5 (commit)
      from  9c464f9c0c9d85df80233c1b0a22f9a7cd318096 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=715a900c9085907fa749589bf738b192b1a2bda5

commit 715a900c9085907fa749589bf738b192b1a2bda5
Author: Jeff Law <law@redhat.com>
Date:   Fri Sep 28 12:48:42 2012 -0600

    2012-09-28  Andreas Schwab  <schwab@linux-m68k.org>
    
            [BZ #6530]
            * stdio-common/vfprintf.c (process_string_arg): Revert
            2000-07-22 change.
    
    2011-09-28  Jonathan Nieder  <jrnieder@gmail.com>
    
            * stdio-common/Makefile (tst-sprintf-ENV): Set environment
            for testcase.
            * stdio-common/tst-sprintf.c: Include <locale.h>
            (main): Test sprintf's handling of incomplete multibyte
            characters.

diff --git a/ChangeLog b/ChangeLog
index f90d0fe..0f1eb18 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2012-09-28  Andreas Schwab  <schwab@linux-m68k.org>
+
+	[BZ #6530]
+	* stdio-common/vfprintf.c (process_string_arg): Revert
+	2000-07-22 change.
+
+2011-09-28  Jonathan Nieder  <jrnieder@gmail.com>
+
+	* stdio-common/Makefile (tst-sprintf-ENV): Set environment
+	for testcase.
+	* stdio-common/tst-sprintf.c: Include <locale.h>
+	(main): Test sprintf's handling of incomplete multibyte
+	characters.
+
 2012-09-28  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* elf/dl-runtime.c (VERSYMIDX): Removed.
diff --git a/NEWS b/NEWS
index 7b3f631..0567c9e 100644
--- a/NEWS
+++ b/NEWS
@@ -9,13 +9,13 @@ Version 2.17
 
 * The following bugs are resolved with this release:
 
-  1349, 3479, 5044, 5298, 5400, 6778, 6808, 9685, 9914, 10014, 10038,
-  11438, 11607, 13412, 13542, 13629, 13679, 13696, 13717, 13741, 13939,
-  13966, 14042, 14090, 14150, 14151, 14154, 14157, 14166, 14173, 14195,
-  14237, 14252, 14283, 14298, 14303, 14307, 14328, 14331, 14336, 14337,
-  14347, 14349, 14376, 14459, 14476, 14505, 14510, 14516, 14518, 14519,
-  14530, 14532, 14538, 14543, 14544, 14545, 14562, 14576, 14579, 14583,
-  14587, 14621.
+  1349, 3479, 5044, 5298, 5400, 6530, 6778, 6808, 9685, 9914, 10014,
+  10038, 11438, 11607, 13412, 13542, 13629, 13679, 13696, 13717, 13741,
+  13939, 13966, 14042, 14090, 14150, 14151, 14154, 14157, 14166, 14173,
+  14195, 14237, 14252, 14283, 14298, 14303, 14307, 14328, 14331, 14336,
+  14337, 14347, 14349, 14376, 14459, 14476, 14505, 14510, 14516, 14518,
+  14519, 14530, 14532, 14538, 14543, 14544, 14545, 14562, 14576, 14579,
+  14583, 14587, 14621.
 
 * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
   Optimized versions of memcpy, memset, and memcmp added for System z10 and
diff --git a/stdio-common/Makefile b/stdio-common/Makefile
index 0cdf630..5e2e48d 100644
--- a/stdio-common/Makefile
+++ b/stdio-common/Makefile
@@ -116,6 +116,7 @@ CFLAGS-scanf17.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
 
 # We know the test has a format string problem.
 CFLAGS-tst-sprintf.c = -Wno-format
+tst-sprintf-ENV = LOCPATH=$(common-objpfx)localedata
 tst-sscanf-ENV = LOCPATH=$(common-objpfx)localedata
 tst-swprintf-ENV = LOCPATH=$(common-objpfx)localedata
 test-vfprintf-ENV = LOCPATH=$(common-objpfx)localedata
diff --git a/stdio-common/tst-sprintf.c b/stdio-common/tst-sprintf.c
index c04fef1..c4e911f 100644
--- a/stdio-common/tst-sprintf.c
+++ b/stdio-common/tst-sprintf.c
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <locale.h>
 #include <string.h>
 
 
@@ -58,5 +59,17 @@ main (void)
       result = 1;
     }
 
+  if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL)
+    {
+      puts ("cannot set locale");
+      result = 1;
+    }
+  else if (sprintf (buf, "%.8s\n", "Foo: \277") != 7
+	   || strcmp (buf, "Foo: \277\n") != 0)
+    {
+      printf ("sprintf (buf, \"%%.8s\\n\", \"Foo: \\277\") produced '%s' output\n", buf);
+      result = 1;
+    }
+
   return result;
 }
diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c
index d569034..17d3f42 100644
--- a/stdio-common/vfprintf.c
+++ b/stdio-common/vfprintf.c
@@ -1168,42 +1168,9 @@ vfprintf (FILE *s, const CHAR_T *format, va_list ap)
 	else if (!is_long && spec != L_('S'))				      \
 	  {								      \
 	    if (prec != -1)						      \
-	      {								      \
-		/* Search for the end of the string, but don't search past    \
-		   the length (in bytes) specified by the precision.  Also    \
-		   don't use incomplete characters.  */			      \
-		if (_NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_MB_CUR_MAX) == 1)   \
-		  len = __strnlen (string, prec);			      \
-		else							      \
-		  {							      \
-		    /* In case we have a multibyte character set the	      \
-		       situation is more complicated.  We must not copy	      \
-		       bytes at the end which form an incomplete character. */\
-		    size_t ignore_size = (unsigned) prec > 1024 ? 1024 : prec;\
-		    wchar_t ignore[ignore_size];			      \
-		    const char *str2 = string;				      \
-		    const char *strend = string + prec;			      \
-		    if (strend < string)				      \
-		      strend = (const char *) UINTPTR_MAX;		      \
-									      \
-		    mbstate_t ps;					      \
-		    memset (&ps, '\0', sizeof (ps));			      \
-									      \
-		    while (str2 != NULL && str2 < strend)		      \
-		      if (__mbsnrtowcs (ignore, &str2, strend - str2,	      \
-					ignore_size, &ps) == (size_t) -1)     \
-			{						      \
-			  /* Conversion function has set errno.  */	      \
-			  done = -1;					      \
-			  goto all_done;				      \
-			}						      \
-									      \
-		    if (str2 == NULL)					      \
-		      len = strlen (string);				      \
-		    else						      \
-		      len = str2 - string - (ps.__count & 7);		      \
-		  }							      \
-	      }								      \
+	      /* Search for the end of the string, but don't search past      \
+		 the length (in bytes) specified by the precision.  */	      \
+	      len = __strnlen (string, prec);				      \
 	    else							      \
 	      len = strlen (string);					      \
 	  }								      \

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                  |   14 ++++++++++++++
 NEWS                       |   14 +++++++-------
 stdio-common/Makefile      |    1 +
 stdio-common/tst-sprintf.c |   13 +++++++++++++
 stdio-common/vfprintf.c    |   39 +++------------------------------------
 5 files changed, 38 insertions(+), 43 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]