Jinoh Kang (@iamahuman) commented about dlls/windows.media.speech/recognizer.c:
- EnterCriticalSection(&impl->cs);
- if (!impl->worker_running && !impl->worker_thread && SUCCEEDED(hr))
impl->worker_running = TRUE;
- else
hr = COR_E_INVALIDOPERATION;
- if (SUCCEEDED(hr) && !(impl->worker_thread = CreateThread(NULL, 0, session_worker_thread_cb, impl, 0, NULL)))
- {
hr = HRESULT_FROM_WIN32(GetLastError());
impl->worker_running = FALSE;
- }
- if (SUCCEEDED(hr))
impl->recognizer_state = SpeechRecognizerState_Capturing;
- LeaveCriticalSection(&impl->cs);
```suggestion:-14+0 if (SUCCEEDED(hr)) { EnterCriticalSection(&impl->cs); if (impl->worker_running || impl->worker_thread) { hr = COR_E_INVALIDOPERATION; } else if (!(impl->worker_thread = CreateThread(NULL, 0, session_worker_thread_cb, impl, 0, NULL))) { hr = HRESULT_FROM_WIN32(GetLastError()); } else { impl->worker_running = TRUE; impl->recognizer_state = SpeechRecognizerState_Capturing; } LeaveCriticalSection(&impl->cs); } ```