This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]