This is the mail archive of the
cygwin
mailing list for the Cygwin project.
No space calculation in wcstombs?
- From: Christoph Ender <chrender-cygwin-1 at spellbreaker dot org>
- To: cygwin at cygwin dot com
- Date: Tue, 23 Oct 2007 11:52:01 +0200
- Subject: No space calculation in wcstombs?
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/