summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2012-02-19 20:55:09 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-21 19:15:48 +0100
commitca588f40db9cb1ba0e3f223ca031b18524be4a09 (patch)
treede18a030b3a6ac517ed51fc77271fcb08344a7ca
parent4fc6bc480408b24509d449a4c26f2dcab18eaaee (diff)
QEasingCurve: implement copy assignment operator inline
Implement the copy-assignment operator inline, using the copy-swap idiom. This makes assignment strongly exception safe, but also simplifies maintainence, because op= is formulated in terms of the copy constructor now. Change-Id: I803c9100a520d659b685992237cb76fd114222c8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--src/corelib/tools/qeasingcurve.cpp15
-rw-r--r--src/corelib/tools/qeasingcurve.h3
2 files changed, 3 insertions, 15 deletions
diff --git a/src/corelib/tools/qeasingcurve.cpp b/src/corelib/tools/qeasingcurve.cpp
index 7a47262798..1ca9a55d72 100644
--- a/src/corelib/tools/qeasingcurve.cpp
+++ b/src/corelib/tools/qeasingcurve.cpp
@@ -1100,22 +1100,9 @@ QEasingCurve::~QEasingCurve()
}
/*!
+ \fn QEasingCurve &QEasingCurve::operator=(const QEasingCurve &other)
Copy \a other.
*/
-QEasingCurve &QEasingCurve::operator=(const QEasingCurve &other)
-{
- // ### non-atomic, requires malloc on shallow copy
- if (d_ptr->config) {
- delete d_ptr->config;
- d_ptr->config = 0;
- }
-
- *d_ptr = *other.d_ptr;
- if (other.d_ptr->config)
- d_ptr->config = other.d_ptr->config->copy();
-
- return *this;
-}
/*!
\fn void QEasingCurve::swap(QEasingCurve &other)
diff --git a/src/corelib/tools/qeasingcurve.h b/src/corelib/tools/qeasingcurve.h
index 64e4027fc4..f3c7c9b618 100644
--- a/src/corelib/tools/qeasingcurve.h
+++ b/src/corelib/tools/qeasingcurve.h
@@ -82,7 +82,8 @@ public:
QEasingCurve(const QEasingCurve &other);
~QEasingCurve();
- QEasingCurve &operator=(const QEasingCurve &other);
+ QEasingCurve &operator=(const QEasingCurve &other)
+ { if ( this != &other ) { QEasingCurve copy(other); swap(copy); } return *this; }
#ifdef Q_COMPILER_RVALUE_REFS
QEasingCurve(QEasingCurve &&other) : d_ptr(other.d_ptr) { other.d_ptr = 0; }
QEasingCurve &operator=(QEasingCurve &&other)