From a7a8363d86ec8ad445fb73619b1ca5cac4e56a86 Mon Sep 17 00:00:00 2001 From: darylm503 Date: Fri, 15 Jun 2012 19:58:39 +0000 Subject: StdLib: Add multi-byte character support. The normal "narrow" character set is now UTF-8 instead of ASCII. Add library classes which are required by StdLib, but not commonly defined in Platform DSC files, to StdLib.inc. Modify MB_LEN_MAX to be 4, the maximum length of UTF-8 characters. Adjust size of internal buffers to be multiples of MB_LEN_MAX instead of assuming 1-byte characters. Make the XYoffset object public and move its declaration into EfiSysCall.h. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: daryl.mcdaniel@intel.com Reviewed-by: erik.c.bjorge@intel.com Reviewed-by: lee.g.rosenbaum@intel.com Reviewed-by: leroy.p.leahy@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13457 6f19259b-4bc3-4df7-8a09-765794883524 --- StdLib/LibC/Stdio/fputwc.c | 3 +-- StdLib/LibC/Stdio/makebuf.c | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'StdLib/LibC/Stdio') diff --git a/StdLib/LibC/Stdio/fputwc.c b/StdLib/LibC/Stdio/fputwc.c index 8bbd407362..76ed839203 100644 --- a/StdLib/LibC/Stdio/fputwc.c +++ b/StdLib/LibC/Stdio/fputwc.c @@ -1,5 +1,5 @@ /* - Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
+ Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that accompanies this distribution. The full text of the license may be found at @@ -81,7 +81,6 @@ __fputwc_unlock(wchar_t wc, FILE *fp) size = wcrtomb(buf, wc, st); if (size == (size_t)-1) { - errno = EILSEQ; return WEOF; } diff --git a/StdLib/LibC/Stdio/makebuf.c b/StdLib/LibC/Stdio/makebuf.c index 1b5991489c..684f0eebc1 100644 --- a/StdLib/LibC/Stdio/makebuf.c +++ b/StdLib/LibC/Stdio/makebuf.c @@ -1,7 +1,7 @@ /** @file Implementation of internal file buffer allocation functions. - Copyright (c) 2010 - 2011, Intel Corporation. All rights reserved.
+ Copyright (c) 2010 - 2012, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License that accompanies this distribution. The full text of the license may be found at @@ -77,11 +77,12 @@ __smakebuf(FILE *fp) if (fp != NULL) { if (fp->_flags & __SNBF) { fp->_bf._base = fp->_p = fp->_nbuf; - fp->_bf._size = 1; + fp->_bf._size = MB_LEN_MAX; return; } flags = __swhatbuf(fp, &size, &couldbetty); if ((p = malloc(size)) == NULL) { + // malloc failed, act unbuffered. fp->_flags |= __SNBF; fp->_bf._base = fp->_p = fp->_nbuf; fp->_bf._size = 1; -- cgit v1.2.3