about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--wcsmbs/mbrtowc.c10
1 files 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 ();