help msvc -analyzer out wrt SkASSERT

Change-Id: I32387c80273d0bc080e47a1d9ccf7454a4a3d79a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167518
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
This commit is contained in:
Caolán McNamara 2024-05-11 19:44:21 +01:00
parent 0ec327662a
commit 52a06992f1
2 changed files with 26 additions and 0 deletions

View file

@ -42,6 +42,7 @@ skia_patches := \
incomplete-type-SkImageGenerator.patch.1 \
0001-AvoidCombiningExtrememelyLargeMeshes.patch.1 \
sort-comparison-assumption.patch.0 \
help-msvc-analyzer.patch \
$(eval $(call gb_UnpackedTarball_set_patchlevel,skia,1))

25
external/skia/help-msvc-analyzer.patch vendored Normal file
View file

@ -0,0 +1,25 @@
--- skia/include/private/base/SkAssert.h.orig
+++ skia/include/private/base/SkAssert.h
@@ -43,6 +43,13 @@
} while (false)
#endif
+// when building with msvc and only when using these headers outside the skia build
+#if defined(_MSC_VER) && !defined(SKIA_IMPLEMENTATION)
+# define SkANALYSIS_ASSUME(condition) __analysis_assume(condition)
+#else
+# define SkANALYSIS_ASSUME(condition) static_cast<void>(0)
+#endif
+
// SkASSERT, SkASSERTF and SkASSERT_RELEASE can be used as stand alone assertion expressions, e.g.
// uint32_t foo(int x) {
// SkASSERT(x > 4);
@@ -54,7 +60,7 @@
// x - 4;
// }
#define SkASSERT_RELEASE(cond) \
- static_cast<void>( (cond) ? (void)0 : []{ SK_ABORT("assert(%s)", #cond); }() )
+ static_cast<void>( (cond) ? (void)0 : [&]{ SK_ABORT("assert(%s)", #cond); SkANALYSIS_ASSUME(cond); }() )
#if defined(SK_DEBUG)
#define SkASSERT(cond) SkASSERT_RELEASE(cond)