From bcbd90ac8917ed9603f16f589caf966449fc5a35 Mon Sep 17 00:00:00 2001 From: Lyle Dean Date: Mon, 24 Jan 2022 15:55:11 +0000 Subject: [PATCH] Fix Memory Leak in MakeSkSurfaceFromBackingStore (flutter/engine#30735) --- engine/src/flutter/shell/platform/embedder/embedder.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/engine/src/flutter/shell/platform/embedder/embedder.cc b/engine/src/flutter/shell/platform/embedder/embedder.cc index 761db7a2de6..c08651e6f39 100644 --- a/engine/src/flutter/shell/platform/embedder/embedder.cc +++ b/engine/src/flutter/shell/platform/embedder/embedder.cc @@ -558,6 +558,7 @@ static sk_sp MakeSkSurfaceFromBackingStore( if (captures->destruction_callback) { captures->destruction_callback(captures->user_data); } + delete captures; }; auto surface = SkSurface::MakeRasterDirectReleaseProc( @@ -565,7 +566,7 @@ static sk_sp MakeSkSurfaceFromBackingStore( const_cast(software->allocation), // pixels software->row_bytes, // row bytes release_proc, // release proc - captures.release() // release context + captures.get() // get context ); if (!surface) { @@ -576,6 +577,9 @@ static sk_sp MakeSkSurfaceFromBackingStore( } return nullptr; } + if (surface) { + captures.release(); // Skia has assumed ownership of the struct. + } return surface; }