diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index 9c0e0d95f87de2e1375d377a3b47d62d97c01b64..722a38998726f392acf8910119b02c9f7285ae77 100644
--- a/src/activeqt/container/qaxbase.cpp
+++ b/src/activeqt/container/qaxbase.cpp
@@ -3682,7 +3682,10 @@ int QAxBase::internalInvoke(QMetaObject::Call call, int index, void **v)
     // get return value
     if (hres == S_OK && ret.vt != VT_EMPTY) {
         QVariantToVoidStar(VARIANTToQVariant(ret, slot.typeName()), v[0], slot.typeName());
-        clearVARIANT(&ret);
+        if (ret.vt != VT_DISPATCH)
+            clearVARIANT(&ret);
+        else
+            VariantInit(&ret);
     }
 
     // update out parameters