forked from qt-creator/qt-creator
QML: Fix crash when opening context menu
The AssistInterface changed to unique_ptr, but the internals of how the
QmlJSEditor looked for quick fixes still wrapped it into a
QSharedPointer, which then deleted the assist interface in addition to
the unique_ptr.
Amends 0e4b0a26d3
Fixes: QTCREATORBUG-28742
Change-Id: If685dbb2c49b09d529d0dcb3677dc90b03a039f0
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
committed by
David Schulz
parent
8512aba9eb
commit
541aafecbb
@@ -2,7 +2,6 @@
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "qmljscomponentfromobjectdef.h"
|
||||
#include "qmljseditor.h"
|
||||
#include "qmljseditortr.h"
|
||||
#include "qmljsquickfix.h"
|
||||
#include "qmljsquickfixassist.h"
|
||||
@@ -42,8 +41,8 @@ class SplitInitializerOperation: public QmlJSQuickFixOperation
|
||||
UiObjectInitializer *_objectInitializer;
|
||||
|
||||
public:
|
||||
SplitInitializerOperation(const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface,
|
||||
UiObjectInitializer *objectInitializer)
|
||||
SplitInitializerOperation(const Internal::QmlJSQuickFixAssistInterface *interface,
|
||||
UiObjectInitializer *objectInitializer)
|
||||
: QmlJSQuickFixOperation(interface, 0)
|
||||
, _objectInitializer(objectInitializer)
|
||||
{
|
||||
@@ -77,7 +76,8 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
void matchSplitInitializerQuickFix(const QmlJSQuickFixInterface &interface, QuickFixOperations &result)
|
||||
void matchSplitInitializerQuickFix(const Internal::QmlJSQuickFixAssistInterface *interface,
|
||||
QuickFixOperations &result)
|
||||
{
|
||||
UiObjectInitializer *objectInitializer = nullptr;
|
||||
|
||||
@@ -108,7 +108,7 @@ class AnalysizeMessageSuppressionOperation: public QmlJSQuickFixOperation
|
||||
Q_DECLARE_TR_FUNCTIONS(AddAnalysisMessageSuppressionComment)
|
||||
|
||||
public:
|
||||
AnalysizeMessageSuppressionOperation(const QSharedPointer<const QmlJSQuickFixAssistInterface> &interface,
|
||||
AnalysizeMessageSuppressionOperation(const Internal::QmlJSQuickFixAssistInterface *interface,
|
||||
const StaticAnalysis::Message &message)
|
||||
: QmlJSQuickFixOperation(interface, 0)
|
||||
, _message(message)
|
||||
@@ -128,7 +128,8 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
void matchAddAnalysisMessageSuppressionCommentQuickFix(const QmlJSQuickFixInterface &interface, QuickFixOperations &result)
|
||||
void matchAddAnalysisMessageSuppressionCommentQuickFix(
|
||||
const Internal::QmlJSQuickFixAssistInterface *interface, QuickFixOperations &result)
|
||||
{
|
||||
const QList<StaticAnalysis::Message> &messages = interface->semanticInfo().staticAnalysisMessages;
|
||||
|
||||
@@ -144,8 +145,7 @@ void matchAddAnalysisMessageSuppressionCommentQuickFix(const QmlJSQuickFixInterf
|
||||
|
||||
QuickFixOperations findQmlJSQuickFixes(const AssistInterface *interface)
|
||||
{
|
||||
QSharedPointer<const AssistInterface> assistInterface(interface);
|
||||
auto qmlJSInterface = assistInterface.staticCast<const QmlJSQuickFixAssistInterface>();
|
||||
auto qmlJSInterface = static_cast<const QmlJSQuickFixAssistInterface *>(interface);
|
||||
|
||||
QuickFixOperations quickFixes;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user