From 66f192e29478ea586ff14741a734e590375d5bf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Abecasis?= Date: Fri, 13 Jan 2012 16:51:07 +0100 Subject: Move Q_CHECK_PTR to inline code The behavior of Q_CHECK_PTR is user-configurable. It may throw and exception, output a warning or be a no-op. As such, its best used in inline code that gets compiled into the user application. Moving it out of the QArrayData API also enables this to be used in code that must handle out-of-memory errors without crashing or otherwise issuing warnings. Putting in QArrayDataPointer gives good convenience coverage for those who are implementing containers on top of the QArrayData stack, and covers its use in the SimpleVector test case. It intentionally leaves out the use of allocate to access the (hidden) shared-empties which don't really allocate, anyway (in QArrayDataPointer::clear and setSharable). The autotest is not updated and will have to make do without the Q_CHECK_PTR "protection". I think that is ok. Change-Id: Idcad909903a9807866bf23ace89f1bf1edc53c3b Reviewed-by: Thiago Macieira --- src/corelib/tools/qarraydata.cpp | 1 - src/corelib/tools/qarraydatapointer.h | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qarraydata.cpp b/src/corelib/tools/qarraydata.cpp index 275fbc1ed5..a693f04042 100644 --- a/src/corelib/tools/qarraydata.cpp +++ b/src/corelib/tools/qarraydata.cpp @@ -73,7 +73,6 @@ QArrayData *QArrayData::allocate(size_t objectSize, size_t alignment, allocSize += (alignment - Q_ALIGNOF(QArrayData)); QArrayData *header = static_cast(::malloc(allocSize)); - Q_CHECK_PTR(header); if (header) { quintptr data = (quintptr(header) + sizeof(QArrayData) + alignment - 1) & ~(alignment - 1); diff --git a/src/corelib/tools/qarraydatapointer.h b/src/corelib/tools/qarraydatapointer.h index 1539b3672f..81eae4cf81 100644 --- a/src/corelib/tools/qarraydatapointer.h +++ b/src/corelib/tools/qarraydatapointer.h @@ -73,6 +73,7 @@ public: explicit QArrayDataPointer(QTypedArrayData *ptr) : d(ptr) { + Q_CHECK_PTR(ptr); } QArrayDataPointer &operator=(const QArrayDataPointer &other) -- cgit v1.2.3