diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2022-10-20 18:03:11 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2022-10-21 06:56:09 +0000 |
commit | 77e6b8a0189ce1396d644cf4593518b97d58a4ca (patch) | |
tree | 729e34ce98425eb0b60759e8e97e4b49a696815e | |
parent | a89a3f76770bbb3944e709cd85704853c009a3a8 (diff) |
Fix returning QAxServer objects from methods
A QVariant initialized from a QMetaType is valid, but null, so in case
of pointer return types we didn't update the QVariant that would then be
written back into the return value.
Always write back if we have previously recognized that we are dealing
with a pointer return type, indicated by argv[0] pointing at the
argv_pointer array.
Task-number: QTBUG-106024
Change-Id: Ic1bd258b006746e0233c09fe68842bdeefdfc84f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
(cherry picked from commit 201d40e4daafa7fd6f2d8f4237f393847550052d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/activeqt/control/qaxserverbase.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/activeqt/control/qaxserverbase.cpp b/src/activeqt/control/qaxserverbase.cpp index 88c3fd7..fdafbd0 100644 --- a/src/activeqt/control/qaxserverbase.cpp +++ b/src/activeqt/control/qaxserverbase.cpp @@ -2502,9 +2502,8 @@ HRESULT WINAPI QAxServerBase::Invoke(DISPID dispidMember, REFIID riid, } } if (!type.isEmpty() && type != "void" && pvarResult) { - if (!varp[0].isValid() && type != "QVariant") + if (argv[0] == argv_pointer && type != "QVariant") varp[0] = QVariant(QMetaType::fromName(type), argv_pointer); -// varp[0].setValue(argv_pointer[0], type); ok = QVariantToVARIANT(varp[0], *pvarResult, type); } } |