summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/tools/qscopedpointer.h4
-rw-r--r--tests/auto/qscopedpointer/tst_qscopedpointer.cpp22
2 files changed, 25 insertions, 1 deletions
diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h
index b15bcacd97..a24f62e7ba 100644
--- a/src/corelib/tools/qscopedpointer.h
+++ b/src/corelib/tools/qscopedpointer.h
@@ -208,8 +208,10 @@ template <typename T, typename Cleanup = QScopedPointerArrayDeleter<T> >
class QScopedArrayPointer : public QScopedPointer<T, Cleanup>
{
public:
+ inline QScopedArrayPointer() : QScopedPointer<T, Cleanup>(0) {}
+
template <typename D>
- explicit inline QScopedArrayPointer(D *p = 0, typename QtPrivate::QScopedArrayEnsureSameType<T,D>::Type = 0)
+ explicit inline QScopedArrayPointer(D *p, typename QtPrivate::QScopedArrayEnsureSameType<T,D>::Type = 0)
: QScopedPointer<T, Cleanup>(p)
{
}
diff --git a/tests/auto/qscopedpointer/tst_qscopedpointer.cpp b/tests/auto/qscopedpointer/tst_qscopedpointer.cpp
index 1a6f944965..06c0ecbafd 100644
--- a/tests/auto/qscopedpointer/tst_qscopedpointer.cpp
+++ b/tests/auto/qscopedpointer/tst_qscopedpointer.cpp
@@ -72,6 +72,7 @@ private Q_SLOTS:
void isNullSignature();
void objectSize();
void comparison();
+ void array();
// TODO instanciate on const object
};
@@ -437,5 +438,26 @@ void tst_QScopedPointer::comparison()
QCOMPARE( int(RefCounted::instanceCount), 0 );
}
+void tst_QScopedPointer::array()
+{
+ int instCount = RefCounted::instanceCount;
+ {
+ QScopedArrayPointer<RefCounted> array;
+ array.reset(new RefCounted[42]);
+ QCOMPARE(instCount + 42, int(RefCounted::instanceCount));
+ }
+ QCOMPARE(instCount, int(RefCounted::instanceCount));
+ {
+ QScopedArrayPointer<RefCounted> array(new RefCounted[42]);
+ QCOMPARE(instCount + 42, int(RefCounted::instanceCount));
+ array.reset(new RefCounted[28]);
+ QCOMPARE(instCount + 28, int(RefCounted::instanceCount));
+ array.reset(0);
+ QCOMPARE(instCount, int(RefCounted::instanceCount));
+ }
+ QCOMPARE(instCount, int(RefCounted::instanceCount));
+}
+
+
QTEST_MAIN(tst_QScopedPointer)
#include "tst_qscopedpointer.moc"