From bbb989aa485ff0cafe33f6d1b70b11fbe214bafc Mon Sep 17 00:00:00 2001 From: Stuart Morgan Date: Mon, 26 Oct 2020 12:15:22 -0700 Subject: [PATCH] Fix possible use of std::moved value in Rasterizer C++ doesn't define an order for evaluation of function arguments, so it's unsafe to call a method on an object in one argument and std::move it in another. Fixes https://github.com/flutter/flutter/issues/65656 --- shell/common/rasterizer.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/shell/common/rasterizer.cc b/shell/common/rasterizer.cc index 3de506ea4f5f4..52b9eb8a2289a 100644 --- a/shell/common/rasterizer.cc +++ b/shell/common/rasterizer.cc @@ -307,7 +307,8 @@ sk_sp Rasterizer::ConvertToRasterImage(sk_sp image) { return nullptr; } - return DoMakeRasterSnapshot(image->dimensions(), + SkISize image_size = image->dimensions(); + return DoMakeRasterSnapshot(image_size, [image = std::move(image)](SkCanvas* canvas) { canvas->drawImage(image, 0, 0); });