From b0c92b30a60f3290a9b8c393915bf623102d0fd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sl=C3=A1vek=20Banko?= Date: Wed, 30 May 2012 03:48:12 +0200 Subject: [PATCH] Fix long response time on large IMAP folders This closes Bug 1009 Thanks to Francois Andriot for the patch! --- libkmime/kmime_util.cpp | 41 +++++++++-------------------------------- 1 file changed, 9 insertions(+), 32 deletions(-) diff --git a/libkmime/kmime_util.cpp b/libkmime/kmime_util.cpp index 03a14e9a..3b19a53b 100644 --- a/libkmime/kmime_util.cpp +++ b/libkmime/kmime_util.cpp @@ -436,49 +436,26 @@ TQCString LFtoCRLF(const TQCString &s) void removeQuots(TQCString &str) { - bool inQuote=false; - - for (int i=0; i < (int)str.length(); i++) { - if (str[i] == '"') { - str.remove(i,1); - i--; - inQuote = !inQuote; - } else { - if (inQuote && (str[i] == '\\')) - str.remove(i,1); - } - } + str.replace(TQRegExp("\\\""), "\""); + str.replace(TQRegExp("\\\\"), "\\"); } void removeQuots(TQString &str) { - bool inQuote=false; - - for (int i=0; i < (int)str.length(); i++) { - if (str[i] == '"') { - str.remove(i,1); - i--; - inQuote = !inQuote; - } else { - if (inQuote && (str[i] == '\\')) - str.remove(i,1); - } - } + str.replace(TQRegExp("\\\""), "\""); + str.replace(TQRegExp("\\\\"), "\\"); } void addQuotes(TQCString &str, bool forceQuotes) { bool needsQuotes=false; - for (unsigned int i=0; i < str.length(); i++) { - if (strchr("()<>@,.;:[]=\\\"",str[i])!=0) - needsQuotes = true; - if (str[i]=='\\' || str[i]=='\"') { - str.insert(i, '\\'); - i++; - } - } + if ( TQString( str ) .contains( TQRegExp( TQString( "\"|\\\\|=|\\]|\\[|:|;|,|\\.|,|@|<|>|\\)|\\(" ) ) ) ) + needsQuotes = true; + + str.replace(TQRegExp("\\"), "\\\\"); + str.replace(TQRegExp("\""), "\\\""); if (needsQuotes || forceQuotes) { str.insert(0,'\"');