On 04/04/2018 04:19 PM, Andreas Schwab wrote: > On Apr 04 2018, fweimer@redhat.com (Florian Weimer) wrote: > >> diff --git a/manual/examples/mbstouwcs.c b/manual/examples/mbstouwcs.c >> index 3a8b9a65f9..4012606bf1 100644 >> --- a/manual/examples/mbstouwcs.c >> +++ b/manual/examples/mbstouwcs.c >> @@ -7,8 +7,11 @@ >> wchar_t * >> mbstouwcs (const char *s) >> { >> - size_t len = strlen (s); >> - wchar_t *result = malloc ((len + 1) * sizeof (wchar_t)); >> + /* Include the NUL terminator in the conversion. */ >> + size_t len = strlen (s) + 1; >> + wchar_t *result = reallocarray (NULL, len + 1, sizeof (wchar_t)); > > What is result[len] used for? Uhm. The terminating null wide character. At least that was the intent. I see that it is not what is happening here. Oh well. The manual says: Use of @code{mbrtowc} is straightforward. The use of @code{mbrtowc} should be clear. The only non-obvious thing about @code{mbrtowc} That should have been a clear warning sign. I've looked at how various corner cases are specified in ISO C11 and updated the manual accordingly. What about the attached patch? Thanks, Florian