diff --git a/src/html/helpdata.cpp b/src/html/helpdata.cpp index 4dcef850cf..02181732a7 100644 --- a/src/html/helpdata.cpp +++ b/src/html/helpdata.cpp @@ -307,22 +307,34 @@ inline static wxInt32 CacheReadInt32(wxInputStream *f) } inline static void CacheWriteString(wxOutputStream *f, const wxChar *str) -{ - size_t len = wxStrlen(str)+1; +{ +#if wxUSE_UNICODE + wxWX2MBbuf mbstr(wxConvUTF8.cWX2MB(str)); +#else + const wxChar *mbstr = str; +#endif + size_t len = strlen(mbstr)+1; CacheWriteInt32(f, len); - f->Write(str, len * sizeof(wxChar)); + f->Write(mbstr, len); } -inline static wxChar *CacheReadString(wxInputStream *f) +inline static wxChar* CacheReadString(wxInputStream *f) { - wxChar *str; + char *str; size_t len = (size_t)CacheReadInt32(f); - str = new wxChar[len]; - f->Read(str, len * sizeof(wxChar)); + str = new char[len]; + f->Read(str, len); +#if !wxUSE_UNICODE return str; +#else + wxMB2WXbuf wxstr(wxConvUTF8.cMB2WX(str)); + wxChar *outstr = new wxChar[wxStrlen(wxstr)+1]; + wxStrcpy(outstr, wxstr); + return outstr; +#endif } -#define CURRENT_CACHED_BOOK_VERSION 2 +#define CURRENT_CACHED_BOOK_VERSION 3 bool wxHtmlHelpData::LoadCachedBook(wxHtmlBookRecord *book, wxInputStream *f) { @@ -331,7 +343,7 @@ bool wxHtmlHelpData::LoadCachedBook(wxHtmlBookRecord *book, wxInputStream *f) /* load header - version info : */ version = CacheReadInt32(f); - + if (version != CURRENT_CACHED_BOOK_VERSION) { // NB: We can just silently return FALSE here and don't worry about