#ifndef WX_PRECOMP
#include "wx/intl.h"
#include "wx/log.h"
+ #include "wx/utils.h"
#endif
#include "wx/strconv.h"
#include "wx/encconv.h"
#include "wx/fontmap.h"
-#include "wx/utils.h"
#ifdef __WXMAC__
#ifndef __DARWIN__
size_t dstWritten = 0;
// the number of NULs terminating this string
- size_t nulLen wxDUMMY_INITIALIZE(0);
+ size_t nulLen = 0; // not really needed, but just to avoid warnings
// if we were not given the input size we just have to assume that the
// string is properly terminated as we have no way of knowing how long it
const wxCharBuffer
wxMBConv::cWC2MB(const wchar_t *inBuff, size_t inLen, size_t *outLen) const
{
- const size_t dstLen = FromWChar(NULL, 0, inBuff, inLen);
+ size_t dstLen = FromWChar(NULL, 0, inBuff, inLen);
if ( dstLen != wxCONV_FAILED )
{
- wxCharBuffer buf(dstLen - 1);
+ // special case of empty input: can't allocate 0 size buffer below as
+ // wxCharBuffer insists on NUL-terminating it
+ wxCharBuffer buf(dstLen ? dstLen - 1 : 1);
if ( FromWChar(buf.data(), dstLen, inBuff, inLen) != wxCONV_FAILED )
{
if ( outLen )
*outLen = dstLen;
const size_t nulLen = GetMBNulLen();
- if ( !NotAllNULs(buf.data() + dstLen - nulLen, nulLen) )
+ if ( dstLen >= nulLen &&
+ !NotAllNULs(buf.data() + dstLen - nulLen, nulLen) )
{
// in this case the output is NUL-terminated and we're not
// supposed to count NUL
- (*outLen) -= nulLen;
+ *outLen -= nulLen;
}
}
{
OSStatus status = noErr ;
ByteCount byteOutLen ;
- ByteCount byteInLen = strlen(psz) ;
+ ByteCount byteInLen = strlen(psz) + 1;
wchar_t *tbuf = NULL ;
UniChar* ubuf = NULL ;
size_t res = 0 ;
WXDLLIMPEXP_DATA_BASE(wxMBConvUTF7&) wxConvUTF7 = wxConvUTF7Obj;
WXDLLIMPEXP_DATA_BASE(wxMBConvUTF8&) wxConvUTF8 = wxConvUTF8Obj;
WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvCurrent = &wxConvLibcObj;
+WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvUI = &wxConvLocal;
WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvFileName = &
#ifdef __WXOSX__
wxConvUTF8Obj;
wxConvLibcObj;
#endif
-
#else // !wxUSE_WCHAR_T
// stand-ins in absence of wchar_t