From owner-svn-src-head@FreeBSD.ORG Sat Feb 28 04:58:19 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 13B70106564A; Sat, 28 Feb 2009 04:58:19 +0000 (UTC) (envelope-from das@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 01BD08FC17; Sat, 28 Feb 2009 04:58:19 +0000 (UTC) (envelope-from das@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n1S4wI8E095216; Sat, 28 Feb 2009 04:58:18 GMT (envelope-from das@svn.freebsd.org) Received: (from das@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n1S4wIka095213; Sat, 28 Feb 2009 04:58:18 GMT (envelope-from das@svn.freebsd.org) Message-Id: <200902280458.n1S4wIka095213@svn.freebsd.org> From: David Schultz Date: Sat, 28 Feb 2009 04:58:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r189131 - head/lib/libc/stdio X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Feb 2009 04:58:19 -0000 Author: das Date: Sat Feb 28 04:58:18 2009 New Revision: 189131 URL: http://svn.freebsd.org/changeset/base/189131 Log: Make sure %zd treats negative arguments properly on 32-bit platforms. Fix harmless but related bugs in %_$zd and %_$tu. PR: 131880 MFC after: 1 week Modified: head/lib/libc/stdio/printf-pos.c head/lib/libc/stdio/vfprintf.c head/lib/libc/stdio/vfwprintf.c Modified: head/lib/libc/stdio/printf-pos.c ============================================================================== --- head/lib/libc/stdio/printf-pos.c Sat Feb 28 02:37:55 2009 (r189130) +++ head/lib/libc/stdio/printf-pos.c Sat Feb 28 04:58:18 2009 (r189131) @@ -61,7 +61,7 @@ __FBSDID("$FreeBSD$"); enum typeid { T_UNUSED, TP_SHORT, T_INT, T_U_INT, TP_INT, T_LONG, T_U_LONG, TP_LONG, T_LLONG, T_U_LLONG, TP_LLONG, - T_PTRDIFFT, TP_PTRDIFFT, T_SIZET, TP_SIZET, + T_PTRDIFFT, TP_PTRDIFFT, T_SSIZET, T_SIZET, TP_SIZET, T_INTMAXT, T_UINTMAXT, TP_INTMAXT, TP_VOID, TP_CHAR, TP_SCHAR, T_DOUBLE, T_LONG_DOUBLE, T_WINT, TP_WCHAR }; @@ -145,7 +145,7 @@ addsarg(struct typetable *types, int fla if (flags & INTMAXT) types->table[types->nextarg++] = T_INTMAXT; else if (flags & SIZET) - types->table[types->nextarg++] = T_SIZET; + types->table[types->nextarg++] = T_SSIZET; else if (flags & PTRDIFFT) types->table[types->nextarg++] = T_PTRDIFFT; else if (flags & LLONGINT) @@ -168,7 +168,7 @@ adduarg(struct typetable *types, int fla else if (flags & SIZET) types->table[types->nextarg++] = T_SIZET; else if (flags & PTRDIFFT) - types->table[types->nextarg++] = T_PTRDIFFT; + types->table[types->nextarg++] = T_SIZET; else if (flags & LLONGINT) types->table[types->nextarg++] = T_U_LLONG; else if (flags & LONGINT) @@ -716,6 +716,9 @@ build_arg_table(struct typetable *types, case T_SIZET: (*argtable) [n].sizearg = va_arg (ap, size_t); break; + case T_SSIZET: + (*argtable) [n].sizearg = va_arg (ap, ssize_t); + break; case TP_SIZET: (*argtable) [n].psizearg = va_arg (ap, size_t *); break; Modified: head/lib/libc/stdio/vfprintf.c ============================================================================== --- head/lib/libc/stdio/vfprintf.c Sat Feb 28 02:37:55 2009 (r189130) +++ head/lib/libc/stdio/vfprintf.c Sat Feb 28 04:58:18 2009 (r189131) @@ -399,7 +399,7 @@ __vfprintf(FILE *fp, const char *fmt0, v #define INTMAX_SIZE (INTMAXT|SIZET|PTRDIFFT|LLONGINT) #define SJARG() \ (flags&INTMAXT ? GETARG(intmax_t) : \ - flags&SIZET ? (intmax_t)GETARG(size_t) : \ + flags&SIZET ? (intmax_t)GETARG(ssize_t) : \ flags&PTRDIFFT ? (intmax_t)GETARG(ptrdiff_t) : \ (intmax_t)GETARG(long long)) #define UJARG() \ Modified: head/lib/libc/stdio/vfwprintf.c ============================================================================== --- head/lib/libc/stdio/vfwprintf.c Sat Feb 28 02:37:55 2009 (r189130) +++ head/lib/libc/stdio/vfwprintf.c Sat Feb 28 04:58:18 2009 (r189131) @@ -479,7 +479,7 @@ __vfwprintf(FILE *fp, const wchar_t *fmt #define INTMAX_SIZE (INTMAXT|SIZET|PTRDIFFT|LLONGINT) #define SJARG() \ (flags&INTMAXT ? GETARG(intmax_t) : \ - flags&SIZET ? (intmax_t)GETARG(size_t) : \ + flags&SIZET ? (intmax_t)GETARG(ssize_t) : \ flags&PTRDIFFT ? (intmax_t)GETARG(ptrdiff_t) : \ (intmax_t)GETARG(long long)) #define UJARG() \