From d2d8e90e9f218103d60737e1273ab5322834d9ec Mon Sep 17 00:00:00 2001 From: Fabian Kosmale Date: Tue, 24 Nov 2020 13:23:23 +0100 Subject: QQuickTextInput: Store mask data in std::unique_ptr This ensures that the memory is freed reliably Fixes: QTBUG-88807 Pick-to: 5.15 6.0 Change-Id: I841a5a2b226a69ce50975d95702a948857d1b54f Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/quick/items/qquicktextinput.cpp | 6 ++---- src/quick/items/qquicktextinput_p_p.h | 4 +++- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/quick/items') diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp index 7861ba768f..f5a09220f5 100644 --- a/src/quick/items/qquicktextinput.cpp +++ b/src/quick/items/qquicktextinput.cpp @@ -3834,8 +3834,7 @@ void QQuickTextInputPrivate::parseInputMask(const QString &maskFields) int delimiter = maskFields.indexOf(QLatin1Char(';')); if (maskFields.isEmpty() || delimiter == 0) { if (m_maskData) { - delete [] m_maskData; - m_maskData = nullptr; + m_maskData.reset(nullptr); m_maxLength = 32767; internalSetText(QString()); } @@ -3866,8 +3865,7 @@ void QQuickTextInputPrivate::parseInputMask(const QString &maskFields) m_maxLength++; } - delete [] m_maskData; - m_maskData = new MaskInputData[m_maxLength]; + m_maskData.reset(new MaskInputData[m_maxLength]); MaskInputData::Casemode m = MaskInputData::NoCaseMode; c = u'\0'; diff --git a/src/quick/items/qquicktextinput_p_p.h b/src/quick/items/qquicktextinput_p_p.h index 6a0a1ca170..cb965f2fed 100644 --- a/src/quick/items/qquicktextinput_p_p.h +++ b/src/quick/items/qquicktextinput_p_p.h @@ -58,6 +58,8 @@ #include "qplatformdefs.h" +#include + // // W A R N I N G // ------------- @@ -230,7 +232,7 @@ public: QQuickItem *cursorItem; QQuickTextNode *textNode; - MaskInputData *m_maskData; + std::unique_ptr m_maskData; QInputControl *m_inputControl; QList m_transactions; -- cgit v1.2.3