diff --git a/libs/main/core/pistring.cpp b/libs/main/core/pistring.cpp index 3686fa4a..03c3bf3b 100644 --- a/libs/main/core/pistring.cpp +++ b/libs/main/core/pistring.cpp @@ -231,18 +231,23 @@ void PIString::appendFromChars(const char * c, int s, const char * codepage) { # else mbstate_t state; memset(&state, 0, sizeof(state)); - wchar_t wc; - //qDebug() << "FromChars ..."; - while (sz = mbrtowc(&wc, c, s, &state) > 0) { - //qDebug() << "0" << s; -// sz = mbrtowc(&wc, c, s, &state); - //qDebug() << "1" << sz; -// if (sz < 1) break; - push_back(PIChar(wc)); - c += sz; s -= sz; - //qDebug() << "2" << c; - } - //qDebug() << "FromChars done" << size(); + size_t len = mbsrtowcs(NULL, c, 0, &state); + wchar_t wstr[len+1]; + mbsrtowcs(&wstr[0], c, len+1, &state); + resize(len); + for (int i=0 i 0) { +// //qDebug() << "0" << s; +//// sz = mbrtowc(&wc, c, s, &state); +// //qDebug() << "1" << sz; +//// if (sz < 1) break; +// push_back(PIChar(wc)); +// c += sz; s -= sz; +// //qDebug() << "2" << c; +// } +// //qDebug() << "FromChars done" << size(); # endif #endif }