include/rtl/stringutils.hxx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-)
New commits: commit 3231db0341baffd2547c50d36ef7c00aaa11601d Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Fri Sep 6 20:03:32 2024 +0100 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Sun Sep 8 21:58:11 2024 +0200 cid#1618764 Operands don't affect result Change-Id: I4faf81b030f3f7b704b25e4817f0ec6c07be4e79 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172977 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> diff --git a/include/rtl/stringutils.hxx b/include/rtl/stringutils.hxx index 3a4775ba6d80..cd8998eff2e4 100644 --- a/include/rtl/stringutils.hxx +++ b/include/rtl/stringutils.hxx @@ -118,13 +118,26 @@ using OUStringChar = OUStringChar_ const; namespace libreoffice_internal { #if defined LIBO_INTERNAL_ONLY -template <typename I, std::enable_if_t<std::is_integral_v<I>, int> = 0> +template <typename I, std::enable_if_t< + std::is_integral_v<I> && std::is_signed_v<I>, + int> = 0> constexpr bool IsValidStrLen(I i, sal_Int32 margin = 0) { assert(margin >= 0); constexpr sal_uInt32 maxLen = std::numeric_limits<sal_Int32>::max(); return i >= 0 && static_cast<std::make_unsigned_t<I>>(i) <= maxLen - margin; } + +template <typename I, std::enable_if_t< + std::is_integral_v<I> && std::is_unsigned_v<I>, + int> = 0> +constexpr bool IsValidStrLen(I i, sal_Int32 margin = 0) +{ + assert(margin >= 0); + constexpr sal_uInt32 maxLen = std::numeric_limits<sal_Int32>::max(); + return i <= maxLen - margin; +} + template <typename I, std::enable_if_t<std::is_integral_v<I>, int> = 0> sal_Int32 ThrowIfInvalidStrLen(I i, sal_Int32 margin = 0) {