From c6497a719379e36c25df5f1980a5b2a1a78d3536 Mon Sep 17 00:00:00 2001 From: Kamikadze <40305144+Kam1k4dze@users.noreply.github.com> Date: Wed, 9 Jul 2025 17:39:36 +0500 Subject: [PATCH] internal: Prevent double-free in attemptDirectScanout (#10974) --- src/helpers/Monitor.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 7e75b02b..b57bb227 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -1554,7 +1554,10 @@ bool CMonitor::attemptDirectScanout() { // lock buffer while DRM/KMS is using it, then release it when page flip happens since DRM/KMS should be done by then // btw buffer's syncReleaser will take care of signaling release point, so we don't do that here PBUFFER->lock(); - PBUFFER->onBackendRelease([PBUFFER]() { PBUFFER->unlock(); }); + PBUFFER->onBackendRelease([wb = WP{PBUFFER}] { + if (wb) + wb->unlock(); + }); return true; }