summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2022-10-20 18:03:11 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-10-21 06:56:09 +0000
commit77e6b8a0189ce1396d644cf4593518b97d58a4ca (patch)
tree729e34ce98425eb0b60759e8e97e4b49a696815e
parenta89a3f76770bbb3944e709cd85704853c009a3a8 (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.cpp3
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);
}
}