summaryrefslogtreecommitdiffstats
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
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>
-rw-r--r--src/contacts/qcontactmanager_p.cpp22
-rw-r--r--src/organizer/qorganizermanager_p.cpp22
2 files changed, 28 insertions, 16 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;
}
diff --git a/src/organizer/qorganizermanager_p.cpp b/src/organizer/qorganizermanager_p.cpp
index 5fd9af31d..95a04cc13 100644
--- a/src/organizer/qorganizermanager_p.cpp
+++ b/src/organizer/qorganizermanager_p.cpp
@@ -241,9 +241,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;
@@ -254,7 +254,7 @@ static inline QString escapeParam(const QString &param)
ret += QStringLiteral("&amp;");
break;
default:
- ret += param.at(i);
+ ret += *it;
break;
}
}
@@ -282,10 +282,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;
}