summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuha Vuolle <juha.vuolle@qt.io>2023-02-03 17:47:46 +0200
committerJuha Vuolle <juha.vuolle@qt.io>2023-02-13 09:43:02 +0200
commit5912c9f28fc6dadf254ebd6e02f1df2ce0ffb7be (patch)
tree3f6c72a8c1cd1d1f865cd4dbd77a2e084d70d7db
parent1390d10cbdd9853c2a9ca0a8fc38b608b86239f8 (diff)
downloadqtsensors-5912c9f28fc6dadf254ebd6e02f1df2ce0ffb7be.tar.gz
Remove ASAN warning on qsensor autotest
The reason for warning was that the qTypedWrapper stored a QScopedPointer<QSensorReadingPrivate>, which in reality held a more derived TestSensor2ReadingPrivate. The base class QSensorReadingPrivate doesn't have a virtual destructor, and ASAN issues a warning when this more derived type is destroyed via a base class pointer. Fixes: QTBUG-105173 Pick-to: 6.5 Change-Id: I0740bd804faa44ace65191b948ae1b5eb44b79c0 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
-rw-r--r--tests/auto/qsensor/test_sensor2.cpp22
-rw-r--r--tests/auto/qsensor/test_sensor2.h32
2 files changed, 0 insertions, 54 deletions
diff --git a/tests/auto/qsensor/test_sensor2.cpp b/tests/auto/qsensor/test_sensor2.cpp
index 6c1b2e0..a3cd5ed 100644
--- a/tests/auto/qsensor/test_sensor2.cpp
+++ b/tests/auto/qsensor/test_sensor2.cpp
@@ -4,28 +4,6 @@
#include "test_sensor2.h"
#include "test_sensor2_p.h"
-#undef IMPLEMENT_READING
-#undef IMPLEMENT_READING_D
-
-#define IMPLEMENT_READING(classname)\
- IMPLEMENT_READING_D(classname, classname ## Private)
-
-#define IMPLEMENT_READING_D(classname, pclassname)\
- classname::classname(QObject *parent)\
- : QSensorReading(parent, new pclassname)\
- , d(d_ptr())\
- {}\
- classname::~classname() {}\
- void classname::copyValuesFrom(QSensorReading *_other)\
- {\
- /* No need to verify types, only called by QSensorBackend */\
- classname *other = static_cast<classname *>(_other);\
- pclassname *my_ptr = static_cast<pclassname*>(d_ptr()->data());\
- pclassname *other_ptr = static_cast<pclassname*>(other->d_ptr()->data());\
- /* Do a direct copy of the private class */\
- *(my_ptr) = *(other_ptr);\
- }
-
IMPLEMENT_READING(TestSensor2Reading)
int TestSensor2Reading::test() const
diff --git a/tests/auto/qsensor/test_sensor2.h b/tests/auto/qsensor/test_sensor2.h
index 83d1926..2f47c2c 100644
--- a/tests/auto/qsensor/test_sensor2.h
+++ b/tests/auto/qsensor/test_sensor2.h
@@ -6,38 +6,6 @@
#include "qsensor.h"
-#undef DECLARE_READING
-#undef DECLARE_READING_D
-
-template <typename T>
-class qTypedWrapper
-{
-public:
- qTypedWrapper(QScopedPointer<QSensorReadingPrivate> *_ptr)
- : ptr(_ptr)
- {
- }
-
- T *operator->() const
- {
- return static_cast<T*>(ptr->data());
- }
-
-private:
- QScopedPointer<QSensorReadingPrivate> *ptr;
-};
-
-#define DECLARE_READING(classname)\
- DECLARE_READING_D(classname, classname ## Private)
-
-#define DECLARE_READING_D(classname, pclassname)\
- public:\
- classname(QObject *parent = 0);\
- virtual ~classname();\
- void copyValuesFrom(QSensorReading *other) override;\
- private:\
- qTypedWrapper<pclassname> d;
-
class TestSensor2ReadingPrivate;
class TestSensor2Reading : public QSensorReading