From 2d753d95fbdc03339c2241ff8c14b76d57637699 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sun, 13 Oct 2024 19:36:53 +0200 Subject: [PATCH] [UCRT] Fix multiple missing dereferences This is a bug in MS UCRT code. MSVC allows to check a pointer to be > 0, GCC emits a warning. --- sdk/lib/ucrt/locale/initctype.cpp | 2 +- sdk/lib/ucrt/locale/initmon.cpp | 2 +- sdk/lib/ucrt/locale/initnum.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sdk/lib/ucrt/locale/initctype.cpp b/sdk/lib/ucrt/locale/initctype.cpp index d4fc2cefb1f..c2a4f65b5dc 100644 --- a/sdk/lib/ucrt/locale/initctype.cpp +++ b/sdk/lib/ucrt/locale/initctype.cpp @@ -251,7 +251,7 @@ error_cleanup: if ( (ploci->ctype1_refcount != nullptr)&& (InterlockedDecrement(ploci->ctype1_refcount) == 0)) { - _ASSERTE(ploci->ctype1_refcount > 0); + _ASSERTE(*ploci->ctype1_refcount > 0); } ploci->ctype1_refcount = nullptr; ploci->ctype1 = nullptr; diff --git a/sdk/lib/ucrt/locale/initmon.cpp b/sdk/lib/ucrt/locale/initmon.cpp index 0525bc744a1..4cdfc0afa71 100644 --- a/sdk/lib/ucrt/locale/initmon.cpp +++ b/sdk/lib/ucrt/locale/initmon.cpp @@ -205,7 +205,7 @@ int __cdecl __acrt_locale_initialize_monetary ( if ( (ploci->lconv_mon_refcount != nullptr) && (InterlockedDecrement(ploci->lconv_mon_refcount) == 0)) { - _ASSERTE(ploci->lconv_mon_refcount > 0); + _ASSERTE(*ploci->lconv_mon_refcount > 0); } if ( (ploci->lconv_intl_refcount != nullptr) && (InterlockedDecrement(ploci->lconv_intl_refcount) == 0)) diff --git a/sdk/lib/ucrt/locale/initnum.cpp b/sdk/lib/ucrt/locale/initnum.cpp index e37fe69c298..801e3d935dd 100644 --- a/sdk/lib/ucrt/locale/initnum.cpp +++ b/sdk/lib/ucrt/locale/initnum.cpp @@ -187,7 +187,7 @@ int __cdecl __acrt_locale_initialize_numeric ( if ( (ploci->lconv_num_refcount != nullptr) && (InterlockedDecrement(ploci->lconv_num_refcount) == 0)) { - _ASSERTE(ploci->lconv_num_refcount > 0); + _ASSERTE(*ploci->lconv_num_refcount > 0); } if ( (ploci->lconv_intl_refcount != nullptr) && (InterlockedDecrement(ploci->lconv_intl_refcount) == 0))