From f1b017b19918df3406e77992ff499207235952c0 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Wed, 29 Nov 2023 16:17:44 +0000 Subject: backport skia "Avoid combining extremely large meshes" fix Change-Id: Iaedd03ba4014b133bc28a4b0a6a7b6aaaaa39a97 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160115 Tested-by: Jenkins Reviewed-by: Xisco Fauli --- ...01-AvoidCombiningExtrememelyLargeMeshes.patch.1 | 34 ++++++++++++++++++++++ external/skia/UnpackedTarball_skia.mk | 1 + 2 files changed, 35 insertions(+) create mode 100644 external/skia/0001-AvoidCombiningExtrememelyLargeMeshes.patch.1 diff --git a/external/skia/0001-AvoidCombiningExtrememelyLargeMeshes.patch.1 b/external/skia/0001-AvoidCombiningExtrememelyLargeMeshes.patch.1 new file mode 100644 index 000000000000..ca58048a75f0 --- /dev/null +++ b/external/skia/0001-AvoidCombiningExtrememelyLargeMeshes.patch.1 @@ -0,0 +1,34 @@ +From 6169a1fabae1743709bc9641ad43fcbb6a4f62e1 Mon Sep 17 00:00:00 2001 +From: John Stiles +Date: Fri, 24 Nov 2023 09:40:11 -0500 +Subject: [PATCH] Avoid combining extremely large meshes. + +Bug: chromium:1505053 +Change-Id: I42f2ff872bbf054686ec7af0cc85ff63055fcfbf +Reviewed-on: https://skia-review.googlesource.com/c/skia/+/782936 +Commit-Queue: Michael Ludwig +Reviewed-by: Michael Ludwig +Auto-Submit: John Stiles +--- + src/gpu/ganesh/ops/DrawMeshOp.cpp | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/src/gpu/ganesh/ops/DrawMeshOp.cpp b/src/gpu/ganesh/ops/DrawMeshOp.cpp +index d827009b993..eed2757579e 100644 +--- a/src/gpu/ganesh/ops/DrawMeshOp.cpp ++++ b/src/gpu/ganesh/ops/DrawMeshOp.cpp +@@ -1178,10 +1178,13 @@ GrOp::CombineResult MeshOp::onCombineIfPossible(GrOp* t, SkArenaAlloc*, const Gr + return CombineResult::kCannotCombine; + } + ++ if (fVertexCount > INT32_MAX - that->fVertexCount) { ++ return CombineResult::kCannotCombine; ++ } + if (SkToBool(fIndexCount) != SkToBool(that->fIndexCount)) { + return CombineResult::kCannotCombine; + } +- if (SkToBool(fIndexCount) && fVertexCount + that->fVertexCount > SkToInt(UINT16_MAX)) { ++ if (SkToBool(fIndexCount) && fVertexCount > UINT16_MAX - that->fVertexCount) { + return CombineResult::kCannotCombine; + } + diff --git a/external/skia/UnpackedTarball_skia.mk b/external/skia/UnpackedTarball_skia.mk index cafc7a9df3b8..d944cfa3e08f 100644 --- a/external/skia/UnpackedTarball_skia.mk +++ b/external/skia/UnpackedTarball_skia.mk @@ -39,6 +39,7 @@ skia_patches := \ tdf147342.patch.0 \ redefinition-of-op.patch.0 \ 0001-Added-missing-include-cstdio.patch \ + 0001-AvoidCombiningExtrememelyLargeMeshes.patch.1 \ $(eval $(call gb_UnpackedTarball_set_patchlevel,skia,1)) -- cgit v1.2.3