diff -r 56cd8111b7f7 -r 41300fa6a67c src/corelib/codecs/qiconvcodec.cpp --- a/src/corelib/codecs/qiconvcodec.cpp Tue Jan 26 12:42:25 2010 +0200 +++ b/src/corelib/codecs/qiconvcodec.cpp Tue Feb 02 00:43:10 2010 +0200 @@ -378,7 +378,7 @@ } int invalidCount = 0; - do { + while (inBytesLeft != 0) { if (iconv(state->cd, inBytesPtr, &inBytesLeft, &outBytes, &outBytesLeft) == (size_t) -1) { if (errno == EINVAL && convState) { // buffer ends in a surrogate @@ -418,7 +418,7 @@ } } } - } while (inBytesLeft != 0); + } // reset to initial state iconv(state->cd, 0, &inBytesLeft, 0, &outBytesLeft);