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 #else
string_object = *((id*) ptr); string_object = *((id*) ptr);
#endif #endif
string_object = [string_object description];
if (info->wide) 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", len = fwprintf(stream, L"%*ls",
(info->left ? - info->width : info->width), (info->left ? - info->width : info->width),
[[string_object description] [string_object cStringUsingEncoding: NSUnicodeStringEncoding]);
cStringUsingEncoding: NSUnicodeStringEncoding]); }
} }
else else
{ {
len = fprintf(stream, "%*s", len = fprintf(stream, "%*s",
(info->left ? - info->width : info->width), (info->left ? - info->width : info->width),
[[string_object description] lossyCString]); [string_object lossyCString]);
} }
return len; return len;
} }