From b18dfd5fa7dfe12956d9e7cd8431a3287f3c8e76 Mon Sep 17 00:00:00 2001 From: Jonah Williams Date: Wed, 27 Mar 2024 10:55:04 -0700 Subject: [PATCH] [Impeller] add missing null check. (flutter/engine#51711) surface can return null if we failed to allocate MSAA or depth/stencil textures. --- engine/src/flutter/shell/gpu/gpu_surface_metal_impeller.mm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/engine/src/flutter/shell/gpu/gpu_surface_metal_impeller.mm b/engine/src/flutter/shell/gpu/gpu_surface_metal_impeller.mm index c9c020fd171..509383130b1 100644 --- a/engine/src/flutter/shell/gpu/gpu_surface_metal_impeller.mm +++ b/engine/src/flutter/shell/gpu/gpu_surface_metal_impeller.mm @@ -150,6 +150,12 @@ std::unique_ptr GPUSurfaceMetalImpeller::AcquireFrameFromCAMetalLa auto surface = impeller::SurfaceMTL::MakeFromMetalLayerDrawable(renderer->GetContext(), drawable, clip_rect); + // The surface may be null if we failed to allocate the onscreen render target + // due to running out of memory. + if (!surface) { + return false; + } + if (clip_rect && clip_rect->IsEmpty()) { return surface->Present(); }