diff options
author | Juha Vuolle <juha.vuolle@qt.io> | 2023-02-03 17:47:46 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2023-02-13 07:58:36 +0000 |
commit | 3c127ef12c283745d16dd20d2944d8e88d022313 (patch) | |
tree | 6e4107a15dbc7f900cfb7b70ed7ec5180fe09f98 | |
parent | 64ff839e277358470fcded221314824d1e164917 (diff) |
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
Change-Id: I0740bd804faa44ace65191b948ae1b5eb44b79c0
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
(cherry picked from commit 5912c9f28fc6dadf254ebd6e02f1df2ce0ffb7be)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | tests/auto/qsensor/test_sensor2.cpp | 22 | ||||
-rw-r--r-- | tests/auto/qsensor/test_sensor2.h | 32 |
2 files changed, 0 insertions, 54 deletions
diff --git a/tests/auto/qsensor/test_sensor2.cpp b/tests/auto/qsensor/test_sensor2.cpp index 6c1b2e0a..a3cd5edf 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 83d1926f..2f47c2c9 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 |