From 9cf7f95483cfa10b01a4cbd2dc97bee2b0c82235 Mon Sep 17 00:00:00 2001
From: Andrew Eikum <aeikum@codeweavers.com>
Date: Mon, 16 Jan 2012 14:02:45 -0600
Subject: [PATCH] dsound: Lock the source buffer during duplication.

---
 dlls/dsound/buffer.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
index bc9b9552ba1..1ea2d0dbec6 100644
--- a/dlls/dsound/buffer.c
+++ b/dlls/dsound/buffer.c
@@ -1083,9 +1083,15 @@ HRESULT IDirectSoundBufferImpl_Duplicate(
         *ppdsb = NULL;
         return DSERR_OUTOFMEMORY;
     }
+
+    RtlAcquireResourceShared(&pdsb->lock, TRUE);
+
     CopyMemory(dsb, pdsb, sizeof(*dsb));
 
     dsb->pwfx = DSOUND_CopyFormat(pdsb->pwfx);
+
+    RtlReleaseResource(&pdsb->lock);
+
     if (dsb->pwfx == NULL) {
         HeapFree(GetProcessHeap(),0,dsb);
         *ppdsb = NULL;
-- 
GitLab