From: Manuel Nickschas Date: Tue, 10 Jun 2008 20:31:45 +0000 (+0200) Subject: Storing format length as quint16 rather than int. X-Git-Tag: 0.3.0~185 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=7fcfb895c67d3769e985905cbc0bc885f5e52b56 Storing format length as quint16 rather than int. Space is crucial here. Well, I just assume that quint16 is not stored 32-bit aligned, of course... --- diff --git a/src/uisupport/uistyle.cpp b/src/uisupport/uistyle.cpp index 10b25e7d..9abdeb53 100644 --- a/src/uisupport/uistyle.cpp +++ b/src/uisupport/uistyle.cpp @@ -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; } diff --git a/src/uisupport/uistyle.h b/src/uisupport/uistyle.h index b3e1a965..43f248a2 100644 --- a/src/uisupport/uistyle.h +++ b/src/uisupport/uistyle.h @@ -36,7 +36,7 @@ class UiStyle { UiStyle(const QString &settingsKey); virtual ~UiStyle(); - typedef QList > FormatList; + typedef QList > 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