diff options
Diffstat (limited to 'src/corelib/codecs/qtextcodec.cpp')
-rw-r--r-- | src/corelib/codecs/qtextcodec.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp index 72c7844561..c221e51ecc 100644 --- a/src/corelib/codecs/qtextcodec.cpp +++ b/src/corelib/codecs/qtextcodec.cpp @@ -343,10 +343,19 @@ static void setup() {} */ QTextCodec::ConverterState::~ConverterState() { - if (flags & FreeFunction) - (QTextCodecUnalignedPointer::decode(state_data))(this); - else if (d) - free(d); + clear(); +} + +void QTextCodec::ConverterState::clear() +{ + if (clearFn) + clearFn(this); + remainingChars = 0; + invalidChars = 0; + state_data[0] = 0; + state_data[1] = 0; + state_data[2] = 0; + state_data[3] = 0; } /*! |