diff --git a/CMakeLists.txt b/CMakeLists.txt index 39c0e789..83a23a28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_policy(SET CMP0017 NEW) # need include() with .cmake project(PIP) set(PIP_MAJOR 3) set(PIP_MINOR 10) -set(PIP_REVISION 0) +set(PIP_REVISION 1) set(PIP_SUFFIX ) set(PIP_COMPANY SHS) set(PIP_DOMAIN org.SHS) diff --git a/libs/main/io_devices/piiostring.cpp b/libs/main/io_devices/piiostring.cpp index b6886213..2cec7c73 100644 --- a/libs/main/io_devices/piiostring.cpp +++ b/libs/main/io_devices/piiostring.cpp @@ -81,7 +81,7 @@ ssize_t PIIOString::writeDevice(const void * data, ssize_t max_size) { if (!canWrite() || !str) return -1; // piCout << "write" << data; if (pos > str->size_s()) pos = str->size_s(); - PIString rs = PIString::fromUTF8((const char *)data); + PIString rs = PIString::fromUTF8((const char *)data, max_size); if (rs.size_s() > max_size) rs.resize(max_size); str->insert(pos, rs); pos += rs.size_s(); diff --git a/libs/main/text/pistring.cpp b/libs/main/text/pistring.cpp index 9897d5c9..715c50df 100644 --- a/libs/main/text/pistring.cpp +++ b/libs/main/text/pistring.cpp @@ -356,15 +356,16 @@ PIString PIString::fromSystem(const char * s) { } -PIString PIString::fromUTF8(const char * s) { +PIString PIString::fromUTF8(const char * s, int l) { PIString ret; if (!s) return ret; if (s[0] != '\0') { if ((uchar)s[0] == 0xEF && (uchar)s[1] == 0xBB && (uchar)s[2] == 0xBF) { s += 3; + if (l > 0) l -= 3; if (s[0] == '\0') return ret; } - ret.appendFromChars(s, -1, __utf8name__); + ret.appendFromChars(s, l, __utf8name__); } return ret; } diff --git a/libs/main/text/pistring.h b/libs/main/text/pistring.h index d8f34576..2a3f7d28 100644 --- a/libs/main/text/pistring.h +++ b/libs/main/text/pistring.h @@ -1700,7 +1700,7 @@ public: //! \~english Returns string constructed from UTF-8. //! \~russian Возвращает строку созданную из UTF-8. - static PIString fromUTF8(const char * s); + static PIString fromUTF8(const char * s, int l = -1); //! \~english Returns string constructed from UTF-8. //! \~russian Возвращает строку созданную из UTF-8.