if (format == wxDF_UNICODETEXT)
{
// host native is UTF16
- wxMBConvUTF16BE converter ;
+ wxMBConvUTF16 converter ;
return converter.WC2MB( NULL , GetText().c_str() , 0 ) + 2; // add space for trailing unichar 0
}
else // == wxDF_TEXT
{
wxCharBuffer buffer = wxConvLibc.cWX2MB( GetText().c_str() );
- return strlen( (const char*) buffer ) + 1;
+ // in some cases "buffer" is null (e.g. Mac OS X)
+ return buffer ? strlen( (const char*) buffer ) + 1 : 0;
}
}
if (format == wxDF_UNICODETEXT)
{
// host native is UTF16
- wxMBConvUTF16BE converter ;
+ wxMBConvUTF16 converter ;
size_t len = converter.WC2MB( NULL , GetText().c_str() , 0 ) ;
wxCharBuffer buffer = converter.cWX2MB( GetText().c_str() );
memcpy( (char*) buf, (const char*) buffer , len + 2); // trailing unichar 0
else
{
wxCharBuffer buffer = wxConvLibc.cWX2MB( GetText().c_str() );
- strcpy( (char*) buf, (const char*) buffer );
+ // in some cases "buffer" is null (e.g. Mac OS X)
+ if (buffer)
+ strcpy( (char*) buf, (const char*) buffer );
}
return true;
if (format == wxDF_UNICODETEXT)
{
// host native is UTF16
- wxMBConvUTF16BE converter ;
+ wxMBConvUTF16 converter ;
SetText( converter.cMB2WX( (const char*) buf ) );
}
else