From ff5c72ff503219759745f764e6482acc4175241e Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 26 Jul 1999 17:01:32 +0000 Subject: [PATCH] Update. * stdlib/wcstombs.c: Do not use global state. Reported by Bruno Haible . --- ChangeLog | 3 +++ stdlib/wcstombs.c | 22 ++++++---------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5776a37..2190b5f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 1999-07-26 Ulrich Drepper + * stdlib/wcstombs.c: Do not use global state. + Reported by Bruno Haible . + * wcsmbs/wctob.c: Avoid sign extension when returning character. Reported by Bruno Haible . diff --git a/stdlib/wcstombs.c b/stdlib/wcstombs.c index d9dc294..0c65090 100644 --- a/stdlib/wcstombs.c +++ b/stdlib/wcstombs.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc. +/* Copyright (C) 1991,1992,1995,1996,1997,1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -17,30 +17,20 @@ Boston, MA 02111-1307, USA. */ #include +#include #include -extern mbstate_t __no_r_state; /* Defined in mbtowc.c. */ - /* Convert the `wchar_t' string in PWCS to a multibyte character string in S, writing no more than N characters. Return the number of bytes - written, or (size_t) -1 if an invalid `wchar_t' was found. - - Attention: this function should NEVER be intentionally used. - The interface is completely stupid. The state is shared between - all conversion functions. You should use instead the restartable - version `wcsrtombs'. */ + written, or (size_t) -1 if an invalid `wchar_t' was found. */ size_t wcstombs (char *s, const wchar_t *pwcs, size_t n) { - mbstate_t save_shift = __no_r_state; - size_t written; - - written = __wcsrtombs (s, &pwcs, n, &__no_r_state); + mbstate_t state; - /* Restore the old shift state. */ - __no_r_state = save_shift; + memset (&state, '\0', sizeof state); /* Return how many we wrote (or maybe an error). */ - return written; + return __wcsrtombs (s, &pwcs, n, &state); } -- 2.7.4