diff options
Diffstat (limited to 'src/corelib/tools/qcollator.cpp')
-rw-r--r-- | src/corelib/tools/qcollator.cpp | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/corelib/tools/qcollator.cpp b/src/corelib/tools/qcollator.cpp index 5155badcf8..1cf223aae6 100644 --- a/src/corelib/tools/qcollator.cpp +++ b/src/corelib/tools/qcollator.cpp @@ -77,9 +77,8 @@ QT_BEGIN_NAMESPACE \sa setLocale() */ QCollator::QCollator(const QLocale &locale) - : d(new QCollatorPrivate) + : d(new QCollatorPrivate(locale)) { - d->locale = locale; d->init(); } @@ -158,15 +157,13 @@ QCollator &QCollator::operator=(const QCollator &other) void QCollator::detach() { if (d->ref.load() != 1) { - QCollatorPrivate *x = new QCollatorPrivate; - x->ref.store(1); - x->locale = d->locale; - x->collator = 0; + QCollatorPrivate *x = new QCollatorPrivate(d->locale); if (!d->ref.deref()) delete d; d = x; - d->init(); } + // All callers need this, because about to modify the object: + d->dirty = true; } /*! @@ -179,7 +176,6 @@ void QCollator::setLocale(const QLocale &locale) detach(); d->locale = locale; - d->dirty = true; } /*! @@ -204,7 +200,6 @@ void QCollator::setCaseSensitivity(Qt::CaseSensitivity cs) detach(); d->caseSensitivity = cs; - d->dirty = true; } /*! @@ -242,7 +237,6 @@ void QCollator::setNumericMode(bool on) detach(); d->numericMode = on; - d->dirty = true; } /*! @@ -275,7 +269,6 @@ void QCollator::setIgnorePunctuation(bool on) detach(); d->ignorePunctuation = on; - d->dirty = true; } /*! |