From 515ab778a7197136a2ccf873dd27388081b5b6a4 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 29 Apr 2000 07:00:59 +0000 Subject: [PATCH] (__mbrtowc): Set end of buffer correctly if s == NULL. --- wcsmbs/mbrtowc.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/wcsmbs/mbrtowc.c b/wcsmbs/mbrtowc.c index b0daf14fd5..212b001422 100644 --- a/wcsmbs/mbrtowc.c +++ b/wcsmbs/mbrtowc.c @@ -43,9 +43,7 @@ __mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps) const unsigned char *inbuf; char *outbuf = (char *) (pwc ?: buf); - /* Tell where we want the result. */ - data.__outbuf = outbuf; - data.__outbufend = outbuf + sizeof (wchar_t); + /* Set information for this step. */ data.__invocation_counter = 0; data.__internal_use = 1; data.__is_last = 1; @@ -55,13 +53,17 @@ __mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps) initial state. */ if (s == NULL) { - data.__outbuf = (char *) buf; + outbuf = (char *) buf; s = ""; n = 1; temp_state = *data.__statep; data.__statep = &temp_state; } + /* Tell where we want the result. */ + data.__outbuf = outbuf; + data.__outbufend = outbuf + sizeof (wchar_t); + /* Make sure we use the correct function. */ update_conversion_ptrs ();