about summary refs log tree commit diff
path: root/wcsmbs/btowc.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-01-07 09:55:57 +0000
committerUlrich Drepper <drepper@redhat.com>1999-01-07 09:55:57 +0000
commit34992338178abc47897f10ce4fb12d204e682b14 (patch)
treee3af6863200bc3f7844813a493b15fd88e2350b1 /wcsmbs/btowc.c
parent1686c452338c6c942384425906d179b7438e184e (diff)
downloadglibc-34992338178abc47897f10ce4fb12d204e682b14.tar.gz
glibc-34992338178abc47897f10ce4fb12d204e682b14.tar.xz
glibc-34992338178abc47897f10ce4fb12d204e682b14.zip
Update.
1999-01-07  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/i386/bits/select.h (__FD_ZERO): Remove early clobbers
	from c and D register output.

1999-01-07  Philip Blundell  <philb@gnu.org>

	* sysdeps/unix/sysv/linux/arm/sigcontextinfo.h: Fix bug in last change.

1999-01-07  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/unix/sysv/linux/alpha/bits/types.h: Correct type for
	__fsfilcnt_t.  Patch by Bruce Elliott <bde@nwlink.com>.

1999-01-05  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* manual/conf.texi: Remove pointers from first @node.  Move old
	@node spec inside comment.
	* manual/lang.texi: Likewise.
	* manual/libc-texinfo.sh: Also find `@node.*Top' in a comment.
	* manual/stdio.texi: Fix typo.

1999-01-04  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* wcsmbs/btowc.c: Accept all values in the range [SCHAR_MIN
	.. UCHAR_MAX].  Local var buf renamed to result and its type
	changed from char[] to wchar_t to get proper alignment.

	* posix/fnmatch.c: Also cast the arguments of the other ctype
	functions to unsigned char.

1999-01-07  Ulrich Drepper  <drepper@cygnus.com>

	* Rules: Add rules for empty.{o,os,op} back.
Diffstat (limited to 'wcsmbs/btowc.c')
-rw-r--r--wcsmbs/btowc.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/wcsmbs/btowc.c b/wcsmbs/btowc.c
index b6a682897b..bac99e8547 100644
--- a/wcsmbs/btowc.c
+++ b/wcsmbs/btowc.c
@@ -1,6 +1,6 @@
-/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
-   Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>
+   Contributed by Ulrich Drepper <drepper@gnu.org>, 1996.
 
    The GNU C Library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public License as
@@ -22,13 +22,14 @@
 #include <string.h>
 #include <wchar.h>
 #include <wcsmbsload.h>
+#include <limits.h>
 
 
 wint_t
 __btowc (c)
      int c;
 {
-  char buf[sizeof (wchar_t)];
+  wchar_t result;
   struct gconv_step_data data;
   char inbuf[1];
   const char *inptr = inbuf;
@@ -37,11 +38,11 @@ __btowc (c)
 
   /* If the parameter does not fit into one byte or it is the EOF value
      we can give the answer now.  */
-  if (c < -128 || c > 127 || c == EOF)
+  if (c < SCHAR_MIN || c > UCHAR_MAX || c == EOF)
     return WEOF;
 
   /* Tell where we want the result.  */
-  data.outbuf = (char *) buf;
+  data.outbuf = (char *) &result;
   data.outbufend = data.outbuf + sizeof (wchar_t);
   data.invocation_counter = 0;
   data.internal_use = 1;
@@ -62,8 +63,8 @@ __btowc (c)
   /* The conversion failed.  */
   if (status != GCONV_OK && status != GCONV_FULL_OUTPUT
       && status != GCONV_EMPTY_INPUT)
-    return WEOF;
+    result = WEOF;
 
-  return *(wchar_t *)buf;
+  return result;
 }
 weak_alias (__btowc, btowc)