rev 4892 - in trunk/packages/kdepim/debian: . patches
Sune Vuorela
pusling-guest at alioth.debian.org
Sat Nov 11 17:31:13 UTC 2006
Author: pusling-guest
Date: 2006-11-11 18:31:13 +0100 (Sat, 11 Nov 2006)
New Revision: 4892
Added:
trunk/packages/kdepim/debian/patches/18_optimize_splitAddressInternal.diff
Modified:
trunk/packages/kdepim/debian/changelog
Log:
Committed patch from upstream bts to optimeze header parsing even on 'evil headers'
Modified: trunk/packages/kdepim/debian/changelog
===================================================================
--- trunk/packages/kdepim/debian/changelog 2006-11-11 13:14:44 UTC (rev 4891)
+++ trunk/packages/kdepim/debian/changelog 2006-11-11 17:31:13 UTC (rev 4892)
@@ -1,3 +1,12 @@
+kdepim (4:3.5.5.dfsg.1-2) unstable; urgency=low
+
+ * Adds 18_optimize_splitAddressInternal.diff to fix lock up on weird
+ headers. It is actually a performance tweak, as it normally continues
+ after 10-15 minutes of non-responding state. Fix by Johannes Schaub. It
+ has a nice side effect to be a general performance boost (Closes: #398073)
+
+ -- Sune Vuorela <debian at pusling.com> Sat, 11 Nov 2006 18:29:58 +0100
+
kdepim (4:3.5.5.dfsg.1-1) unstable; urgency=medium
* Improve KOrganizer's description, from Filipus Klutiero.
Added: trunk/packages/kdepim/debian/patches/18_optimize_splitAddressInternal.diff
===================================================================
--- trunk/packages/kdepim/debian/patches/18_optimize_splitAddressInternal.diff 2006-11-11 13:14:44 UTC (rev 4891)
+++ trunk/packages/kdepim/debian/patches/18_optimize_splitAddressInternal.diff 2006-11-11 17:31:13 UTC (rev 4892)
@@ -0,0 +1,137 @@
+Index: libemailfunctions/email.cpp
+===================================================================
+--- libemailfunctions/email.cpp (Revision 599840)
++++ libemailfunctions/email.cpp (Arbeitskopie)
+@@ -111,7 +111,14 @@
+ displayName = "";
+ addrSpec = "";
+ comment = "";
+-
++
++ // these strings are later copied to displayName resp. addrSpec resp. comment
++ // we don't operate directly on those variables, since as ByteArray deriverates
++ // they have a miserable performance on operator+
++ QString dName;
++ QString aSpec;
++ QString cmmt;
++
+ if ( address.isEmpty() )
+ return KPIM::AddressEmpty;
+
+@@ -129,26 +136,26 @@
+ case TopLevel : {
+ switch ( *p ) {
+ case '"' : inQuotedString = !inQuotedString;
+- displayName += *p;
++ dName += *p;
+ break;
+ case '(' : if ( !inQuotedString ) {
+ context = InComment;
+ commentLevel = 1;
+ }
+ else
+- displayName += *p;
++ dName += *p;
+ break;
+ case '<' : if ( !inQuotedString ) {
+ context = InAngleAddress;
+ }
+ else
+- displayName += *p;
++ dName += *p;
+ break;
+ case '\\' : // quoted character
+- displayName += *p;
++ dName += *p;
+ ++p; // skip the '\'
+ if ( *p )
+- displayName += *p;
++ dName += *p;
+ else
+ return KPIM::UnexpectedEnd;
+ break;
+@@ -159,57 +166,57 @@
+ return KPIM::UnexpectedComma;
+ }
+ else
+- displayName += *p;
++ dName += *p;
+ break;
+- default : displayName += *p;
++ default : dName += *p;
+ }
+ break;
+ }
+ case InComment : {
+ switch ( *p ) {
+ case '(' : ++commentLevel;
+- comment += *p;
++ cmmt += *p;
+ break;
+ case ')' : --commentLevel;
+ if ( commentLevel == 0 ) {
+ context = TopLevel;
+- comment += ' '; // separate the text of several comments
++ cmmt += ' '; // separate the text of several comments
+ }
+ else
+- comment += *p;
++ cmmt += *p;
+ break;
+ case '\\' : // quoted character
+- comment += *p;
++ cmmt += *p;
+ ++p; // skip the '\'
+ if ( *p )
+- comment += *p;
++ cmmt += *p;
+ else
+ return KPIM::UnexpectedEnd;
+ break;
+- default : comment += *p;
++ default : cmmt += *p;
+ }
+ break;
+ }
+ case InAngleAddress : {
+ switch ( *p ) {
+ case '"' : inQuotedString = !inQuotedString;
+- addrSpec += *p;
++ aSpec += *p;
+ break;
+ case '>' : if ( !inQuotedString ) {
+ context = TopLevel;
+ }
+ else
+- addrSpec += *p;
++ aSpec += *p;
+ break;
+ case '\\' : // quoted character
+- addrSpec += *p;
++ aSpec += *p;
+ ++p; // skip the '\'
+ if ( *p )
+- addrSpec += *p;
++ aSpec += *p;
+ else
+ return KPIM::UnexpectedEnd;
+ break;
+- default : addrSpec += *p;
++ default : aSpec += *p;
+ }
+ break;
+ }
+@@ -223,9 +230,10 @@
+ if ( context == InAngleAddress )
+ return KPIM::UnclosedAngleAddr;
+
+- displayName = displayName.stripWhiteSpace();
+- comment = comment.stripWhiteSpace();
+- addrSpec = addrSpec.stripWhiteSpace();
++
++ displayName = dName.stripWhiteSpace().local8Bit();
++ comment = cmmt.stripWhiteSpace().local8Bit();
++ addrSpec = aSpec.stripWhiteSpace().local8Bit();
+
+ if ( addrSpec.isEmpty() ) {
+ if ( displayName.isEmpty() )
More information about the pkg-kde-commits
mailing list