// 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);
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;
}
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;
}
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