Roger Zoellner : xaudio2: Don't return XAudio28 interface for XAudio2[0..7 ] objects in QueryInterface().

Alexandre Julliard julliard at winehq.org
Mon Oct 15 16:15:29 CDT 2018


Module: wine
Branch: master
Commit: a303f9cd101a06b7baf6302a90c8b3f6eb29a03c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a303f9cd101a06b7baf6302a90c8b3f6eb29a03c

Author: Roger Zoellner <zoellner.roger at gmail.com>
Date:   Fri Oct 12 21:05:24 2018 +0200

xaudio2: Don't return XAudio28 interface for XAudio2[0..7] objects in QueryInterface().

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=43660
Signed-off-by: Roger Zoellner <zoellner.roger at gmail.com>
Signed-off-by: Andrew Eikum <aeikum at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/xaudio2_7/tests/xaudio2.c | 3 +++
 dlls/xaudio2_7/xaudio_dll.c    | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/dlls/xaudio2_7/tests/xaudio2.c b/dlls/xaudio2_7/tests/xaudio2.c
index 6609753..0c1d9a7 100644
--- a/dlls/xaudio2_7/tests/xaudio2.c
+++ b/dlls/xaudio2_7/tests/xaudio2.c
@@ -1273,6 +1273,9 @@ START_TEST(xaudio2)
     if(hr == S_OK){
         xaudio27 = TRUE;
 
+        hr = IXAudio27_QueryInterface(xa27, &IID_IXAudio28, (void**) &xa);
+        ok(hr != S_OK, "QueryInterface with IID_IXAudio28 on IXAudio27 object returned success. Expected to fail\n");
+
         hr = IXAudio27_Initialize(xa27, 0, XAUDIO2_ANY_PROCESSOR);
         ok(hr == S_OK, "Initialize failed: %08x\n", hr);
 
diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c
index 28cf985..461ac56 100644
--- a/dlls/xaudio2_7/xaudio_dll.c
+++ b/dlls/xaudio2_7/xaudio_dll.c
@@ -1262,7 +1262,9 @@ static HRESULT WINAPI IXAudio2Impl_QueryInterface(IXAudio2 *iface, REFIID riid,
     TRACE("(%p)->(%s, %p)\n", This, debugstr_guid(riid), ppvObject);
 
     if(IsEqualGUID(riid, &IID_IUnknown) ||
+#if XAUDIO2_VER == 8
             IsEqualGUID(riid, &IID_IXAudio28) ||
+#endif
             IsEqualGUID(riid, &IID_IXAudio2))
         *ppvObject = &This->IXAudio2_iface;
     else if(IsEqualGUID(riid, &IID_IXAudio27)){




More information about the wine-cvs mailing list