Revision edc1de97 qemu-thread-win32.c

b/qemu-thread-win32.c
215 215
    if (data->mode == QEMU_THREAD_DETACHED) {
216 216
        g_free(data);
217 217
        data = NULL;
218
    } else {
219
        InitializeCriticalSection(&data->cs);
220 218
    }
221 219
    TlsSetValue(qemu_thread_tls_index, data);
222 220
    qemu_thread_exit(start_routine(thread_arg));
......
227 225
{
228 226
    QemuThreadData *data = TlsGetValue(qemu_thread_tls_index);
229 227
    if (data) {
228
        assert(data->mode != QEMU_THREAD_DETACHED);
230 229
        data->ret = arg;
231 230
        EnterCriticalSection(&data->cs);
232 231
        data->exited = true;
......
258 257
        CloseHandle(handle);
259 258
    }
260 259
    ret = data->ret;
260
    assert(data->mode != QEMU_THREAD_DETACHED);
261 261
    DeleteCriticalSection(&data->cs);
262 262
    g_free(data);
263 263
    return ret;
......
288 288
    data->mode = mode;
289 289
    data->exited = false;
290 290

  
291
    if (data->mode != QEMU_THREAD_DETACHED) {
292
        InitializeCriticalSection(&data->cs);
293
    }
294

  
291 295
    hThread = (HANDLE) _beginthreadex(NULL, 0, win32_start_routine,
292 296
                                      data, 0, &thread->tid);
293 297
    if (!hThread) {
......
314 318
        return NULL;
315 319
    }
316 320

  
321
    assert(data->mode != QEMU_THREAD_DETACHED);
317 322
    EnterCriticalSection(&data->cs);
318 323
    if (!data->exited) {
319 324
        handle = OpenThread(SYNCHRONIZE | THREAD_SUSPEND_RESUME, FALSE,

Also available in: Unified diff