summaryrefslogtreecommitdiffstats
path: root/src/contacts/qcontactmanager_p.cpp
diff options
context:
space:
mode:
authorMatt Vogt <matthew.vogt@jollamobile.com>2014-12-23 08:08:21 +1000
committerMatthew Vogt <matthew.vogt@qinetic.com.au>2015-01-05 04:56:59 +0100
commitd8a9ba4dee1dad7479106885a74a1368f0be44c8 (patch)
tree7d464d74d49d4d08d4a991f0911f4f854a0d0cd9 /src/contacts/qcontactmanager_p.cpp
parent6aa227bcf2d34acff67cebf656df40e308221da8 (diff)
Make ID component parameter escaping functions consistent
Use the same coding style when escaping and unescaping characters in both the URI and the local ID components. Change-Id: I690c3d840368a7795e7fe092910255960cbacdde Reviewed-by: Christopher Adams <chris.adams@jollamobile.com>
Diffstat (limited to 'src/contacts/qcontactmanager_p.cpp')
-rw-r--r--src/contacts/qcontactmanager_p.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/contacts/qcontactmanager_p.cpp b/src/contacts/qcontactmanager_p.cpp
index 51ba5b345..99ff27bfd 100644
--- a/src/contacts/qcontactmanager_p.cpp
+++ b/src/contacts/qcontactmanager_p.cpp
@@ -342,9 +342,9 @@ static inline QString escapeParam(const QString &param)
{
QString ret;
const int len = param.length();
- ret.reserve(int(len * 1.1));
- for (int i = 0; i < len; ++i) {
- switch (param.at(i).unicode()) {
+ ret.reserve(len + (len >> 3));
+ for (QString::const_iterator it = param.begin(), end = param.end(); it != end; ++it) {
+ switch (it->unicode()) {
case ':':
ret += QStringLiteral("&#58;");
break;
@@ -355,7 +355,7 @@ static inline QString escapeParam(const QString &param)
ret += QStringLiteral("&amp;");
break;
default:
- ret += param.at(i);
+ ret += *it;
break;
}
}
@@ -383,10 +383,16 @@ static inline QByteArray escapeColon(const QByteArray &param)
static inline QString unescapeParam(const QString &param)
{
QString ret(param);
- if (ret.contains(QLatin1Char('&'))) {
- ret.replace(QStringLiteral("&#58;"), QStringLiteral(":"));
- ret.replace(QStringLiteral("&equ;"), QStringLiteral("="));
- ret.replace(QStringLiteral("&amp;"), QStringLiteral("&"));
+ int index = 0;
+ while ((index = ret.indexOf(QLatin1Char('&'), index)) != -1) {
+ const QString partial(ret.mid(index, 5));
+ if (partial == QStringLiteral("&#58;"))
+ ret.replace(index, 5, QStringLiteral(":"));
+ else if (partial == QStringLiteral("&equ;"))
+ ret.replace(index, 5, QStringLiteral("="));
+ else if (partial == QStringLiteral("&amp;"))
+ ret.replace(index, 5, QStringLiteral("&"));
+ ++index;
}
return ret;
}