This is the mail archive of the
newlib@sourceware.org
mailing list for the newlib project.
Re: No space calculation in wcstombs?
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: newlib at sourceware dot org
- Cc: cygwin at cygwin dot com
- Date: Tue, 23 Oct 2007 12:42:58 +0200
- Subject: Re: No space calculation in wcstombs?
- References: <E828DFE1-0E83-4500-A761-CEDC7944D3F0@spellbreaker.org>
- Reply-to: newlib at sourceware dot org
[Redirected to the newlib mailing list]
On Oct 23 11:52, Christoph Ender wrote:
> Hi all,
>
> when converting wchar_t*- to (mb)char*-Strings I've been
> so far using the wcstombs function in two steps: One call
> to length=wcstombs(NULL, *src, 0) in order to make the
> function return the space required for the dest string
> and one call wo wcstombs(*dest, *src, length) to actually
> convert the src string after allocating (length) bytes.
>
> I've just noticed that the first step does not work with
> cygwin and I've attached a small example to demonstrate
> the problem. On a Linux- and Mac OS X-machine the return
> value is 26, on cygwin 0. Since wcstombs is supposed to be
> affected by the current locale setting I've set the locale
> to "C", but the result is still the same: cygwin always
> tries to do the actual converion (if the len parameter is
> not 0 there is a segfault) instead of measuring the space
> requirements.
>
> ----------8<----------8<----------8<----------8<----------
>
> #include <stdio.h>
> #include <wchar.h>
> #include <locale.h>
>
> int main(int argc, char *argv[])
> {
> int result;
> wchar_t s[] = L"abcdefghijklmnopqrstuvwxyz";
>
> printf("Locale: %s\n", setlocale(LC_ALL, "C"));
>
> result = wcstombs(NULL, s, 0);
>
> printf("Required space: %d.\n", result);
>
> return 0;
> }
>
> ----------8<----------8<----------8<----------8<----------
>
> What am I doing wrong here? Or is this actually a cygwin
> problem?
No, it's a newlib problem. The wide character support in newlib
is somewhat rudimentary. The reason is that newlib is mainly
targeting embedded systems which don't need full wchar support.
However, as this is an open source project, patches are always
welcome.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat