--- old/CPP/7zip/Archive/Zip/ZipItem.cpp 2023-03-03 12:16:28.000000000 +0000 +++ new/CPP/7zip/Archive/Zip/ZipItem.cpp 2023-04-15 18:03:22.996666664 +0000 @@ -424,13 +424,16 @@ size_t slen = s.Len(); size_t dlen = slen * 4; const char* dest = s_utf8.GetBuf_SetEnd(dlen + 1); // (source length * 4) + null termination + const char* destStart = dest; size_t done = iconv(cd, (char**)&src, &slen, (char**)&dest, &dlen); bzero((size_t*)dest + done, 1); iconv_close(cd); - if (ConvertUTF8ToUnicode(s_utf8, res) || ignore_Utf8_Errors) + AString s_utf8_correctLength; + s_utf8_correctLength.SetFrom(s_utf8, dest - destStart); + if (ConvertUTF8ToUnicode(s_utf8_correctLength, res) || ignore_Utf8_Errors) return; } }