[PATCH v3 2/6] windows.media.speech/tests: Handle a possible race condition.

Bernhard Kölbl wine at gitlab.winehq.org
Thu Jun 9 14:20:45 CDT 2022


From: Bernhard Kölbl <besentv at gmail.com>

Signed-off-by: Bernhard Kölbl <besentv at gmail.com>
---
 dlls/windows.media.speech/tests/speech.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/dlls/windows.media.speech/tests/speech.c b/dlls/windows.media.speech/tests/speech.c
index 421819fd10a..d1e1c0cc396 100644
--- a/dlls/windows.media.speech/tests/speech.c
+++ b/dlls/windows.media.speech/tests/speech.c
@@ -1122,13 +1122,15 @@ static void test_SpeechRecognizer(void)
 
         compilation_result = (void*)0xdeadbeef;
         hr = IAsyncOperation_SpeechRecognitionCompilationResult_GetResults(operation, &compilation_result);
+        if (hr == S_OK)      /* Sometimes the operation could have already finished here, */
+            goto skip_await; /* if so skip waiting and getting the results a second time. */
+
         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);
 
         await_async_inspectable((IAsyncOperation_IInspectable *)operation,
                                  &compilation_handler,
                                  &IID_IAsyncOperationCompletedHandler_SpeechRecognitionCompilationResult);
-        check_async_info((IInspectable *)operation, 1, Completed, S_OK);
 
         hr = IAsyncOperation_SpeechRecognitionCompilationResult_put_Completed(operation, NULL);
         ok(hr == E_ILLEGAL_DELEGATE_ASSIGNMENT, "Got unexpected hr %#lx.\n", hr);
@@ -1138,10 +1140,13 @@ static void test_SpeechRecognizer(void)
 
         compilation_result = (void*)0xdeadbeef;
         hr = IAsyncOperation_SpeechRecognitionCompilationResult_GetResults(operation, &compilation_result);
+skip_await:
         ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
 
         check_interface(compilation_result, &IID_IAgileObject, TRUE);
 
+        check_async_info((IInspectable *)operation, 1, Completed, S_OK);
+
         hr = ISpeechRecognitionCompilationResult_get_Status(compilation_result, &result_status);
         ok(hr == S_OK, "ISpeechRecognitionCompilationResult_get_Status failed, hr %#lx.\n", hr);
         ok(result_status == SpeechRecognitionResultStatus_Success, "Got unexpected status %#x.\n", result_status);
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/217



More information about the wine-devel mailing list