Fix wide character output for 64bit wide characters.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@22432 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2006-02-05 10:56:35 +00:00
parent 9a3ea5ee3b
commit 5c319cebe7

View file

@ -447,18 +447,35 @@ handle_printf_atsign (FILE *stream,
#else
string_object = *((id*) ptr);
#endif
string_object = [string_object description];
if (info->wide)
{
if (sizeof(wchar_t) == 4)
{
unsigned length = [string_object length];
wchar_t buf[length + 1];
unsigned i;
for (i = 0; i < length; i++)
{
buf[i] = [string_object characterAtIndex: i];
}
buf[i] = 0;
len = fwprintf(stream, L"%*ls",
(info->left ? - info->width : info->width), buf);
}
else
{
len = fwprintf(stream, L"%*ls",
(info->left ? - info->width : info->width),
[[string_object description]
cStringUsingEncoding: NSUnicodeStringEncoding]);
[string_object cStringUsingEncoding: NSUnicodeStringEncoding]);
}
}
else
{
len = fprintf(stream, "%*s",
(info->left ? - info->width : info->width),
[[string_object description] lossyCString]);
[string_object lossyCString]);
}
return len;
}