[PATCH v3 2/6] winegstreamer: Release wg_transform output sample when too small.

Rémi Bernon wine at gitlab.winehq.org
Thu Jun 23 12:12:39 CDT 2022


From: Rémi Bernon <rbernon at codeweavers.com>

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/winegstreamer/wg_transform.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/winegstreamer/wg_transform.c b/dlls/winegstreamer/wg_transform.c
index e05432f6ac7..b0048fad644 100644
--- a/dlls/winegstreamer/wg_transform.c
+++ b/dlls/winegstreamer/wg_transform.c
@@ -314,10 +314,15 @@ static struct wg_sample *transform_request_sample(gsize size, void *context)
 
     GST_LOG("size %#zx, context %p", size, transform);
 
-    sample = InterlockedExchangePointer((void **)&transform->output_wg_sample, NULL);
-    if (!sample || sample->max_size < size)
+    if (!(sample = InterlockedExchangePointer((void **)&transform->output_wg_sample, NULL)))
         return NULL;
 
+    if (sample->max_size < size)
+    {
+        InterlockedDecrement(&sample->refcount);
+        return NULL;
+    }
+
     return sample;
 }
 
-- 
GitLab


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



More information about the wine-devel mailing list