- if (psz)
- {
- size_t nLen = WC2MB((char *) NULL, psz, 0);
- if (nLen == (size_t)-1)
- return wxCharBuffer((char *) NULL);
- wxCharBuffer buf(nLen);
- WC2MB((char *)(const char *) buf, psz, nLen);
- return buf;
- }
- else
- return wxCharBuffer((char *) NULL);
-}
-
-// ----------------------------------------------------------------------------
-// standard file conversion
-// ----------------------------------------------------------------------------
-
-WXDLLEXPORT_DATA(wxMBConvFile) wxConvFile;
-
-// just use the libc conversion for now
-size_t wxMBConvFile::MB2WC(wchar_t *buf, const char *psz, size_t n) const
-{
- return wxMB2WC(buf, psz, n);
-}
-
-size_t wxMBConvFile::WC2MB(char *buf, const wchar_t *psz, size_t n) const
-{
- return wxWC2MB(buf, psz, n);
+ // return value excludes NUL
+ size_t nLen = pwz ? WC2MB((char *) NULL, pwz, 0) : (size_t)-1;
+ if (nLen == (size_t)-1)
+ return wxCharBuffer((const char *)NULL);
+
+ wxCharBuffer buf(nLen); // this allocates nLen+1
+ WC2MB((char *)(const char *) buf, pwz, nLen+1);
+ return buf;