summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qstring.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/corelib/tools/qstring.cpp')
-rw-r--r--src/corelib/tools/qstring.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 5bb8d5a5a1..b0c259272e 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -4920,11 +4920,12 @@ QString QString::toLower() const
prop = qGetProp(*p);
}
if (prop->lowerCaseSpecial) {
+ const ushort *specialCase = specialCaseMap + prop->lowerCaseDiff;
+ ushort length = *specialCase++;
int pos = pp - s.d->data();
- s.resize(s.d->size + SPECIAL_CASE_MAX_LEN);
+ s.resize(s.d->size + length - 1);
pp = s.d->data() + pos;
- const ushort *specialCase = specialCaseMap + prop->lowerCaseDiff;
- while (*specialCase)
+ while (length--)
*pp++ = *specialCase++;
} else {
*pp++ = *p + prop->lowerCaseDiff;
@@ -4936,7 +4937,6 @@ QString QString::toLower() const
while (e != d->data() + d->size)
*pp++ = *e++;
- s.truncate(pp - s.d->data());
return s;
}
++p;
@@ -5042,11 +5042,12 @@ QString QString::toUpper() const
prop = qGetProp(*p);
}
if (prop->upperCaseSpecial) {
+ const ushort *specialCase = specialCaseMap + prop->upperCaseDiff;
+ ushort length = *specialCase++;
int pos = pp - s.d->data();
- s.resize(s.d->size + SPECIAL_CASE_MAX_LEN);
+ s.resize(s.d->size + length - 1);
pp = s.d->data() + pos;
- const ushort *specialCase = specialCaseMap + prop->upperCaseDiff;
- while (*specialCase)
+ while (length--)
*pp++ = *specialCase++;
} else {
*pp++ = *p + prop->upperCaseDiff;
@@ -5058,7 +5059,6 @@ QString QString::toUpper() const
while (e != d->data() + d->size)
*pp++ = *e++;
- s.truncate(pp - s.d->data());
return s;
}
++p;