Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 22 Apr 2012 21:28:14 +0000 (UTC)
From:      David Schultz <das@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r234587 - head/lib/libc/stdio
Message-ID:  <201204222128.q3MLSENU059845@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: das
Date: Sun Apr 22 21:28:14 2012
New Revision: 234587
URL: http://svn.freebsd.org/changeset/base/234587

Log:
  Bugfix: Correctly count the number of characters read for %l[ conversions.

Modified:
  head/lib/libc/stdio/vfscanf.c

Modified: head/lib/libc/stdio/vfscanf.c
==============================================================================
--- head/lib/libc/stdio/vfscanf.c	Sun Apr 22 21:22:14 2012	(r234586)
+++ head/lib/libc/stdio/vfscanf.c	Sun Apr 22 21:28:14 2012	(r234587)
@@ -248,12 +248,12 @@ convert_wccl(FILE *fp, wchar_t *wcp, int
 {
 	mbstate_t mbs;
 	wchar_t twc;
-	int n, nchars, nconv, nread;
+	int n, nchars, nconv;
 	char buf[MB_CUR_MAX];
 
 	if (wcp == SUPPRESS_PTR)
 		wcp = &twc;
-	n = nread = 0;
+	n = 0;
 	nchars = 0;
 	while (width != 0) {
 		if (n == MB_CUR_MAX) {
@@ -279,7 +279,6 @@ convert_wccl(FILE *fp, wchar_t *wcp, int
 				}
 				break;
 			}
-			nread += n;
 			width--;
 			if (wcp != &twc)
 				wcp++;
@@ -298,12 +297,10 @@ convert_wccl(FILE *fp, wchar_t *wcp, int
 		fp->_flags |= __SERR;
 		return (-1);
 	}
-	n = nchars;
-	if (n == 0)
+	if (nchars == 0)
 		return (0);
 	*wcp = L'\0';
-	/* XXX This matches historical behavior, but it's wrong. */
-	return (nread + n);
+	return (nchars);
 }
 
 static __inline int



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201204222128.q3MLSENU059845>