From 00300e396a8e5bf9350e0aa066da1eb10c356c47 Mon Sep 17 00:00:00 2001 From: Ingo Klcker Date: Sun, 22 Apr 2007 09:30:28 +0000 Subject: [PATCH] - Use kasciistricmp() instead of converting prefCharset to lower case. - Check the codec returned by KMMsgBase::codecForName() for being NULL and fallback to kmkernel->networkCodec() in this case. svn path=/trunk/KDE/kdepim/; revision=656744 --- kmmsgbase.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/kmmsgbase.cpp b/kmmsgbase.cpp index c9b935392..f5a4cb488 100644 --- a/kmmsgbase.cpp +++ b/kmmsgbase.cpp @@ -395,18 +395,22 @@ QString KMMsgBase::decodeRFC2047String( const QByteArray& aStr, } if ( str.find( "=?" ) < 0 ) { - if ( !prefCharset.isEmpty() ) { - kAsciiToLower(prefCharset.data()); - if ( prefCharset == "us-ascii" ) { + QByteArray charsetName; + if ( ! prefCharset.isEmpty() ) { + if ( kasciistricmp( prefCharset.data(), "us-ascii" ) ) { // isn`t this foolproof? - return KMMsgBase::codecForName( "utf-8" )->toUnicode( str ); + charsetName = "utf-8"; } else { - return KMMsgBase::codecForName( prefCharset )->toUnicode( str ); + charsetName = prefCharset; } } else { - return KMMsgBase::codecForName( GlobalSettings::self()-> - fallbackCharacterEncoding().latin1() )->toUnicode( str ); + charsetName = GlobalSettings::self()->fallbackCharacterEncoding().latin1(); } + const QTextCodec *codec = KMMsgBase::codecForName( charsetName ); + if ( ! codec ) { + codec = kmkernel->networkCodec(); + } + return codec->toUnicode( str ); } QString result;