Rémi Bernon : windows.media.speech: Return operation error from IAsyncOperation_GetResults.

Alexandre Julliard julliard at winehq.org
Wed Apr 27 16:12:14 CDT 2022


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

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Mon Apr 25 17:29:13 2022 +0200

windows.media.speech: Return operation error from IAsyncOperation_GetResults.

And E_ILLEGAL_METHOD_CALL if called when status isn't Completed or
Error.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/windows.media.speech/async.c        | 10 +++++-----
 dlls/windows.media.speech/tests/speech.c |  2 +-
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/dlls/windows.media.speech/async.c b/dlls/windows.media.speech/async.c
index 1e6dd336c84..3d3db840fa0 100644
--- a/dlls/windows.media.speech/async.c
+++ b/dlls/windows.media.speech/async.c
@@ -201,16 +201,16 @@ static HRESULT WINAPI async_operation_GetResults( IAsyncOperation_IInspectable *
     TRACE("iface %p, results %p.\n", iface, results);
 
     EnterCriticalSection(&impl->cs);
-    if (impl->status == Closed)
+    if (impl->status != Completed && impl->status != Error)
         hr = E_ILLEGAL_METHOD_CALL;
-    else if (impl->status > Started && impl->result)
+    else if (!impl->result)
+        hr = E_UNEXPECTED;
+    else
     {
         *results = impl->result;
         impl->result = NULL; /* NOTE: AsyncOperation gives up it's reference to result here! */
-        hr = S_OK;
+        hr = impl->hr;
     }
-    else
-        hr = E_UNEXPECTED;
     LeaveCriticalSection(&impl->cs);
 
     return hr;
diff --git a/dlls/windows.media.speech/tests/speech.c b/dlls/windows.media.speech/tests/speech.c
index 051b38ce0f9..e6120afdad0 100644
--- a/dlls/windows.media.speech/tests/speech.c
+++ b/dlls/windows.media.speech/tests/speech.c
@@ -988,7 +988,7 @@ static void test_SpeechRecognizer(void)
 
         compilation_result = (void*)0xdeadbeef;
         hr = IAsyncOperation_SpeechRecognitionCompilationResult_GetResults(operation, &compilation_result);
-        todo_wine ok(hr == E_ILLEGAL_METHOD_CALL, "Got unexpected hr %#lx.\n", hr);
+        ok(hr == E_ILLEGAL_METHOD_CALL, "Got unexpected hr %#lx.\n", hr);
         ok(compilation_result == (void*)0xdeadbeef, "Compilation result had value %p.\n", compilation_result);
 
         hr = IAsyncOperation_SpeechRecognitionCompilationResult_put_Completed(operation, &compilation_handler.IAsyncHandler_Compilation_iface);




More information about the wine-cvs mailing list