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)
 {

Reply via email to