Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 2009 18:53:52 +0000 (UTC)
From:      Roman Divacky <rdivacky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r187302 - in head/lib/libc: locale stdio
Message-ID:  <200901151853.n0FIrqjN084389@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rdivacky
Date: Thu Jan 15 18:53:52 2009
New Revision: 187302
URL: http://svn.freebsd.org/changeset/base/187302

Log:
  Introduce a local variable and use it instead of passed in parameter
  to get rid of restrict qualifier discarding. This lets libc compile
  cleanly in gnu99 mode.
  
  Suggested by:	kib, christoph.mallon at gmx.de
  Approved by:	kib (mentor)

Modified:
  head/lib/libc/locale/mbstowcs.c
  head/lib/libc/locale/wcsftime.c
  head/lib/libc/locale/wcstombs.c
  head/lib/libc/stdio/fputws.c
  head/lib/libc/stdio/vswscanf.c

Modified: head/lib/libc/locale/mbstowcs.c
==============================================================================
--- head/lib/libc/locale/mbstowcs.c	Thu Jan 15 18:31:36 2009	(r187301)
+++ head/lib/libc/locale/mbstowcs.c	Thu Jan 15 18:53:52 2009	(r187302)
@@ -37,7 +37,9 @@ mbstowcs(wchar_t * __restrict pwcs, cons
 {
 	static const mbstate_t initial;
 	mbstate_t mbs;
+	const char *sp;
 
 	mbs = initial;
-	return (__mbsnrtowcs(pwcs, &s, SIZE_T_MAX, n, &mbs));
+	sp = s;
+	return (__mbsnrtowcs(pwcs, &sp, SIZE_T_MAX, n, &mbs));
 }

Modified: head/lib/libc/locale/wcsftime.c
==============================================================================
--- head/lib/libc/locale/wcsftime.c	Thu Jan 15 18:31:36 2009	(r187301)
+++ head/lib/libc/locale/wcsftime.c	Thu Jan 15 18:53:52 2009	(r187302)
@@ -53,6 +53,7 @@ wcsftime(wchar_t * __restrict wcs, size_
 	static const mbstate_t initial;
 	mbstate_t mbs;
 	char *dst, *dstp, *sformat;
+	const wchar_t *formatp;
 	size_t n, sflen;
 	int sverrno;
 
@@ -63,13 +64,14 @@ wcsftime(wchar_t * __restrict wcs, size_
 	 * for strftime(), which only handles single-byte characters.
 	 */
 	mbs = initial;
-	sflen = wcsrtombs(NULL, &format, 0, &mbs);
+	formatp = format;
+	sflen = wcsrtombs(NULL, &formatp, 0, &mbs);
 	if (sflen == (size_t)-1)
 		goto error;
 	if ((sformat = malloc(sflen + 1)) == NULL)
 		goto error;
 	mbs = initial;
-	wcsrtombs(sformat, &format, sflen + 1, &mbs);
+	wcsrtombs(sformat, &formatp, sflen + 1, &mbs);
 
 	/*
 	 * Allocate memory for longest multibyte sequence that will fit

Modified: head/lib/libc/locale/wcstombs.c
==============================================================================
--- head/lib/libc/locale/wcstombs.c	Thu Jan 15 18:31:36 2009	(r187301)
+++ head/lib/libc/locale/wcstombs.c	Thu Jan 15 18:53:52 2009	(r187302)
@@ -37,7 +37,9 @@ wcstombs(char * __restrict s, const wcha
 {
 	static const mbstate_t initial;
 	mbstate_t mbs;
+	const wchar_t *pwcsp;
 
 	mbs = initial;
-	return (__wcsnrtombs(s, &pwcs, SIZE_T_MAX, n, &mbs));
+	pwcsp = pwcs;
+	return (__wcsnrtombs(s, &pwcsp, SIZE_T_MAX, n, &mbs));
 }

Modified: head/lib/libc/stdio/fputws.c
==============================================================================
--- head/lib/libc/stdio/fputws.c	Thu Jan 15 18:31:36 2009	(r187301)
+++ head/lib/libc/stdio/fputws.c	Thu Jan 15 18:53:52 2009	(r187302)
@@ -45,6 +45,7 @@ fputws(const wchar_t * __restrict ws, FI
 	char buf[BUFSIZ];
 	struct __suio uio;
 	struct __siov iov;
+	const wchar_t *wsp;
 
 	FLOCKFILE(fp);
 	ORIENT(fp, 1);
@@ -54,7 +55,8 @@ fputws(const wchar_t * __restrict ws, FI
 	uio.uio_iovcnt = 1;
 	iov.iov_base = buf;
 	do {
-		nbytes = __wcsnrtombs(buf, &ws, SIZE_T_MAX, sizeof(buf),
+		wsp = ws;
+		nbytes = __wcsnrtombs(buf, &wsp, SIZE_T_MAX, sizeof(buf),
 		    &fp->_mbstate);
 		if (nbytes == (size_t)-1)
 			goto error;

Modified: head/lib/libc/stdio/vswscanf.c
==============================================================================
--- head/lib/libc/stdio/vswscanf.c	Thu Jan 15 18:31:36 2009	(r187301)
+++ head/lib/libc/stdio/vswscanf.c	Thu Jan 15 18:53:52 2009	(r187302)
@@ -66,6 +66,7 @@ vswscanf(const wchar_t * __restrict str,
 	char *mbstr;
 	size_t mlen;
 	int r;
+	const wchar_t *strp;
 
 	/*
 	 * XXX Convert the wide character string to multibyte, which
@@ -74,7 +75,8 @@ vswscanf(const wchar_t * __restrict str,
 	if ((mbstr = malloc(wcslen(str) * MB_CUR_MAX + 1)) == NULL)
 		return (EOF);
 	mbs = initial;
-	if ((mlen = wcsrtombs(mbstr, &str, SIZE_T_MAX, &mbs)) == (size_t)-1) {
+	strp = str;
+	if ((mlen = wcsrtombs(mbstr, &strp, SIZE_T_MAX, &mbs)) == (size_t)-1) {
 		free(mbstr);
 		return (EOF);
 	}



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