From fe71933655985e94daefccb95aa906102fc21522 Mon Sep 17 00:00:00 2001 From: Bo Liu Date: Mon, 19 Jul 2021 10:14:12 -0400 Subject: [PATCH] Null check color_space_ptr in draw functor v2 Missed toXYZD50 usage last time. Still assume sRGB if null. Bug: 187798471 Test: Manually tested setting color_space_ptr to null in GL/VKFunctorDrawable Change-Id: Idee2660d368dd55e45f5d07d52839105ba951ff3 --- native/webview/plat_support/draw_functor.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/native/webview/plat_support/draw_functor.cpp b/native/webview/plat_support/draw_functor.cpp index 03dd707a1d096..1584350bb6f12 100644 --- a/native/webview/plat_support/draw_functor.cpp +++ b/native/webview/plat_support/draw_functor.cpp @@ -116,8 +116,14 @@ void draw_gl(int functor, void* data, } COMPILE_ASSERT(sizeof(params.color_space_toXYZD50) == sizeof(skcms_Matrix3x3), gamut_transform_size_mismatch); - draw_gl_params.color_space_ptr->toXYZD50( - reinterpret_cast(¶ms.color_space_toXYZD50)); + if (draw_gl_params.color_space_ptr) { + draw_gl_params.color_space_ptr->toXYZD50( + reinterpret_cast(¶ms.color_space_toXYZD50)); + } else { + // Assume sRGB. + memcpy(¶ms.color_space_toXYZD50, &SkNamedGamut::kSRGB, + sizeof(params.color_space_toXYZD50)); + } SupportData* support = static_cast(data); support->callbacks.draw_gl(functor, support->data, ¶ms); @@ -196,8 +202,14 @@ void drawVk(int functor, void* data, }; COMPILE_ASSERT(sizeof(params.color_space_toXYZD50) == sizeof(skcms_Matrix3x3), gamut_transform_size_mismatch); - draw_vk_params.color_space_ptr->toXYZD50( - reinterpret_cast(¶ms.color_space_toXYZD50)); + if (draw_vk_params.color_space_ptr) { + draw_vk_params.color_space_ptr->toXYZD50( + reinterpret_cast(¶ms.color_space_toXYZD50)); + } else { + // Assume sRGB. + memcpy(¶ms.color_space_toXYZD50, &SkNamedGamut::kSRGB, + sizeof(params.color_space_toXYZD50)); + } COMPILE_ASSERT(NELEM(params.transform) == NELEM(draw_vk_params.transform), mismatched_transform_matrix_sizes); for (int i = 0; i < NELEM(params.transform); ++i) {