X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a56a1234a58e8e4b6f25baee902cecabab7b73be..e4e83f385a58f00b1f97315ebd80f380d16ae472:/include/wx/strconv.h diff --git a/include/wx/strconv.h b/include/wx/strconv.h index ba28c8a81a..c25a05017c 100644 --- a/include/wx/strconv.h +++ b/include/wx/strconv.h @@ -14,7 +14,7 @@ #define _WX_STRCONV_H_ #include "wx/defs.h" -#include "wx/wxchar.h" +#include "wx/chartype.h" #include "wx/buffer.h" #ifdef __DIGITALMARS__ @@ -521,10 +521,25 @@ extern WXDLLIMPEXP_DATA_BASE(wxMBConv *) wxConvCurrent; #if wxUSE_UNICODE #define wxConvertWX2MB(s) wxConvCurrent->cWX2MB(s) #define wxConvertMB2WX(s) wxConvCurrent->cMB2WX(s) + + // these functions should be used when the conversions really, really have + // to succeed (usually because we pass their results to a standard C + // function which would crash if we passed NULL to it), so these functions + // always return a valid pointer if their argument is non-NULL + + // this function safety is achieved by trying wxConvLibc first, wxConvUTF8 + // next if it fails and, finally, wxConvISO8859_1 which always succeeds + extern WXDLLIMPEXP_BASE wxWCharBuffer wxSafeConvertMB2WX(const char *s); + + // this function uses wxConvLibc and wxConvUTF8(MAP_INVALID_UTF8_TO_OCTAL) + // if it fails + extern WXDLLIMPEXP_BASE wxCharBuffer wxSafeConvertWX2MB(const wchar_t *ws); #else // ANSI // no conversions to do #define wxConvertWX2MB(s) (s) #define wxConvertMB2WX(s) (s) + #define wxSafeConvertMB2WX(s) (s) + #define wxSafeConvertWX2MB(s) (s) #endif // Unicode/ANSI #endif // _WX_STRCONV_H_