No space calculation in wcstombs?

Christoph Ender chrender-cygwin-1@spellbreaker.org
Tue Oct 23 09:52:00 GMT 2007



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?


Thanks in advance,
Christoph.


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list