Storing format length as quint16 rather than int.
authorManuel Nickschas <sputnick@quassel-irc.org>
Tue, 10 Jun 2008 20:31:45 +0000 (22:31 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sat, 2 Aug 2008 13:17:09 +0000 (15:17 +0200)
Space is crucial here. Well, I just assume that quint16 is not stored
32-bit aligned, of course...

src/uisupport/uistyle.cpp
src/uisupport/uistyle.h

index 10b25e7..9abdeb5 100644 (file)
@@ -163,12 +163,16 @@ QString UiStyle::formatCode(FormatType ftype) const {
 // Since we create those ourselves, we should be pretty safe that nobody does something crappy here.
 UiStyle::StyledString UiStyle::styleString(const QString &s_) {
   QString s = s_;
+  if(s.length() > 65535) {
+    qWarning() << QString("String too long to be styled: %1").arg(s);
+    return StyledString();
+  }
   StyledString result;
-  result.formatList.append(qMakePair(0, (quint32)None));
+  result.formatList.append(qMakePair((quint16)0, (quint32)None));
   quint32 curfmt = (quint32)None;
-  int pos = 0; int length = 0;
+  int pos = 0; quint16 length = 0;
   for(;;) {
-    pos = s.indexOf('%', pos);
+    int pos = s.indexOf('%', pos);
     if(pos < 0) break;
     if(s[pos+1] == '%') { // escaped %, we just remove one and continue
       s.remove(pos, 1);
@@ -211,7 +215,7 @@ UiStyle::StyledString UiStyle::styleString(const QString &s_) {
     if(pos == result.formatList.last().first)
       result.formatList.last().second = curfmt;
     else
-      result.formatList.append(qMakePair(pos, curfmt));
+      result.formatList.append(qMakePair((quint16)pos, curfmt));
   }
   result.plainText = s;
   return result;
@@ -335,12 +339,12 @@ QDataStream &operator<<(QDataStream &out, const UiStyle::FormatList &formatList)
 }
 
 QDataStream &operator>>(QDataStream &in, UiStyle::FormatList &formatList) {
-  int cnt;
+  quint16 cnt;
   in >> cnt;
-  for(int i = 0; i < cnt; i++) {
-    int pos; quint32 ftype;
+  for(quint16 i = 0; i < cnt; i++) {
+    quint16 pos; quint32 ftype;
     in >> pos >> ftype;
-    formatList.append(qMakePair(pos, ftype));
+    formatList.append(qMakePair((quint16)pos, ftype));
   }
   return in;
 }
index b3e1a96..43f248a 100644 (file)
@@ -36,7 +36,7 @@ class UiStyle {
     UiStyle(const QString &settingsKey);
     virtual ~UiStyle();
 
-    typedef QList<QPair<int, quint32> > FormatList;
+    typedef QList<QPair<quint16, quint32> > FormatList;
 
     //! This enumerates the possible formats a text element may have. */
     /** These formats are ordered on increasing importance, in cases where a given property is specified