chart2/source/tools/PolynomialRegressionCurveCalculator.cxx   |    1 
 chart2/source/view/charttypes/PieChart.cxx                    |    1 
 compilerplugins/clang/test/writeonlyvars.cxx                  |    1 
 connectivity/source/drivers/dbase/DIndexIter.cxx              |    1 
 connectivity/source/drivers/dbase/dindexnode.cxx              |    2 
 include/o3tl/safeint.hxx                                      |   56 ------
 include/o3tl/untaint.hxx                                      |   81 ++++++++++
 lotuswordpro/source/filter/lwptablelayout.cxx                 |    1 
 sal/rtl/string.cxx                                            |    9 -
 sal/rtl/ustring.cxx                                           |    9 -
 sc/inc/kahan.hxx                                              |    1 
 sc/source/core/data/document.cxx                              |    1 
 sc/source/core/tool/subtotal.cxx                              |    1 
 sc/source/filter/excel/impop.cxx                              |    2 
 sc/source/filter/excel/xistream.cxx                           |    2 
 sc/source/filter/excel/xlformula.cxx                          |    1 
 sc/source/filter/excel/xltoolbar.cxx                          |    2 
 scaddins/source/analysis/analysishelper.cxx                   |    1 
 scaddins/source/analysis/financial.cxx                        |    1 
 svl/source/numbers/zforscan.cxx                               |    1 
 svx/source/customshapes/EnhancedCustomShapeFunctionParser.cxx |    2 
 sw/source/core/table/swtable.cxx                              |    1 
 sw/source/filter/ww8/ww8scan.cxx                              |    2 
 sw/source/ui/index/cnttab.cxx                                 |    2 
 tools/source/stream/stream.cxx                                |    1 
 25 files changed, 115 insertions(+), 68 deletions(-)

New commits:
commit be6015e3c4e3fcbb2a7c08d30156be71cfca768b
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Tue Aug 19 15:39:25 2025 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Wed Aug 20 15:08:44 2025 +0200

    cid#1659971 silence Overflowed return value
    
    and
    
    cid#1659699 Overflowed return value
    cid#1659759 Overflowed return value
    cid#1659922 Overflowed return value
    cid#1660190 Overflowed return value
    cid#1660286 Overflowed return value
    cid#1660457 Overflowed return value
    
    Change-Id: Ie9fffe4994b10ed3d4feb14eaf7950e3f01714ef
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189927
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Jenkins

diff --git a/chart2/source/tools/PolynomialRegressionCurveCalculator.cxx 
b/chart2/source/tools/PolynomialRegressionCurveCalculator.cxx
index 1f2ea3e3e965..074ddd23e1dc 100644
--- a/chart2/source/tools/PolynomialRegressionCurveCalculator.cxx
+++ b/chart2/source/tools/PolynomialRegressionCurveCalculator.cxx
@@ -22,6 +22,7 @@
 
 #include <cmath>
 #include <limits>
+#include <o3tl/untaint.hxx>
 #include <rtl/math.hxx>
 #include <rtl/ustrbuf.hxx>
 
diff --git a/chart2/source/view/charttypes/PieChart.cxx 
b/chart2/source/view/charttypes/PieChart.cxx
index 812cfb66babe..fdf49388044a 100644
--- a/chart2/source/view/charttypes/PieChart.cxx
+++ b/chart2/source/view/charttypes/PieChart.cxx
@@ -36,6 +36,7 @@
 #include <sal/log.hxx>
 #include <osl/diagnose.h>
 #include <comphelper/diagnose_ex.hxx>
+#include <o3tl/untaint.hxx>
 #include <tools/helpers.hxx>
 
 #include <limits>
diff --git a/compilerplugins/clang/test/writeonlyvars.cxx 
b/compilerplugins/clang/test/writeonlyvars.cxx
index fc521fa7d417..0fc141f62dd2 100644
--- a/compilerplugins/clang/test/writeonlyvars.cxx
+++ b/compilerplugins/clang/test/writeonlyvars.cxx
@@ -24,7 +24,6 @@
 #if defined LIBO_USE_SOURCE_LOCATION
 // expected-error@o3tl/runtimetooustring.hxx:* {{read s 
[loplugin:writeonlyvars]}}
 // expected-error@o3tl/runtimetooustring.hxx:* {{write s 
[loplugin:writeonlyvars]}}
-// expected-error@o3tl/safeint.hxx:* {{read res [loplugin:writeonlyvars]}}
 #if !defined NDEBUG
 // expected-error@o3tl/runtimetooustring.hxx:* {{read ok 
[loplugin:writeonlyvars]}}
 #endif
diff --git a/connectivity/source/drivers/dbase/DIndexIter.cxx 
b/connectivity/source/drivers/dbase/DIndexIter.cxx
index 35f5862b1bc2..7f1c97451fc4 100644
--- a/connectivity/source/drivers/dbase/DIndexIter.cxx
+++ b/connectivity/source/drivers/dbase/DIndexIter.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <dbase/DIndexIter.hxx>
+#include <o3tl/untaint.hxx>
 #include <com/sun/star/sdb/SQLFilterOperator.hpp>
 
 using namespace ::com::sun::star::sdb;
diff --git a/connectivity/source/drivers/dbase/dindexnode.cxx 
b/connectivity/source/drivers/dbase/dindexnode.cxx
index 0e4746a0b9a6..1b070b1aace1 100644
--- a/connectivity/source/drivers/dbase/dindexnode.cxx
+++ b/connectivity/source/drivers/dbase/dindexnode.cxx
@@ -19,7 +19,7 @@
 
 #include <dbase/dindexnode.hxx>
 #include <dbase/DIndex.hxx>
-#include <o3tl/safeint.hxx>
+#include <o3tl/untaint.hxx>
 #include <tools/debug.hxx>
 #include <tools/stream.hxx>
 #include <sal/log.hxx>
diff --git a/include/o3tl/safeint.hxx b/include/o3tl/safeint.hxx
index 18a50c86694a..fa963e15ab24 100644
--- a/include/o3tl/safeint.hxx
+++ b/include/o3tl/safeint.hxx
@@ -227,62 +227,6 @@ clamp_to_unsigned(T2 value) {
 // tools like -fsanitize=implicit-conversion should still be able to detect 
truncation:
 template<typename T1, typename T2> constexpr T1 narrowing(T2 value) { return 
value; }
 
-// std::min wrapped to inform coverity that the result is now deemed sanitized
-// coverity[ -taint_source ]
-template<typename T> [[nodiscard]] inline T sanitizing_min(T a, T b)
-{
-    return std::min(a, b);
-}
-
-// For use when std::inf is an acceptable result
-[[nodiscard]]
-#if defined __clang__ || defined __GNUC__
-__attribute__((no_sanitize("float-divide-by-zero")))
-#endif
-inline double div_allow_zero(double a, double b)
-{
-#if defined(__COVERITY__) && __COVERITY_MAJOR__ <= 2024
-    assert(b != 0 && "suppress floating point divide_by_zero");
-#endif
-    return a / b;
-}
-
-// To sanitize in/de-crementing value where the result is known by the caller 
to be guaranteed to fit in
-// the source type range without over/under-flow
-[[nodiscard]] inline unsigned short sanitizing_inc(unsigned short value)
-{
-    int res = value + 1;
-    assert(res <= std::numeric_limits<unsigned short>::max() &&
-           "nValue was supposed to be incrementable without overflow");
-    return static_cast<unsigned short>(res);
-}
-
-[[nodiscard]] inline unsigned short sanitizing_dec(unsigned short value)
-{
-    int res = value - 1;
-    assert(res >= 0 &&
-           "nValue was supposed to be decrementable without underflow");
-    return static_cast<unsigned short>(res);
-}
-
-[[nodiscard]] inline short sanitizing_inc(short value)
-{
-    int res = value + 1;
-    assert(res >= std::numeric_limits<short>::min() &&
-           res <= std::numeric_limits<short>::max() &&
-           "nValue was supposed to be incrementable without overflow");
-    return static_cast<short>(res);
-}
-
-[[nodiscard]] inline short sanitizing_dec(short value)
-{
-    int res = value - 1;
-    assert(res >= std::numeric_limits<short>::min() &&
-           res <= std::numeric_limits<short>::max() &&
-           "nValue was supposed to be decrementable without underflow");
-    return static_cast<short>(res);
-}
-
 // A helper for taking care of signed/unsigned comparisons in constant bounds 
case
 // Should avoid Coverity warnings like "cid#1618764 Operands don't affect 
result"
 template <typename I, I Min = std::template numeric_limits<I>::min(),
diff --git a/include/o3tl/untaint.hxx b/include/o3tl/untaint.hxx
new file mode 100644
index 000000000000..37632847039e
--- /dev/null
+++ b/include/o3tl/untaint.hxx
@@ -0,0 +1,81 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#pragma once
+
+#include <sal/config.h>
+
+#include <algorithm>
+#include <cassert>
+#include <limits>
+
+namespace o3tl
+{
+// For use when std::inf is an acceptable result
+[[nodiscard]]
+#if defined __clang__ || defined __GNUC__
+    __attribute__((no_sanitize("float-divide-by-zero")))
+#endif
+    inline double
+    div_allow_zero(double a, double b)
+{
+#if defined(__COVERITY__) && __COVERITY_MAJOR__ <= 2024
+    assert(b != 0 && "suppress floating point divide_by_zero");
+#endif
+    return a / b;
+}
+
+// std::min wrapped to inform coverity that the result is now deemed sanitized
+// coverity[ -taint_source ]
+template <typename T>[[nodiscard]] inline T sanitizing_min(T a, T b) { return 
std::min(a, b); }
+
+// To sanitize in/de-crementing value where the result is known by the caller 
to be guaranteed to fit in
+// the source type range without over/under-flow
+[[nodiscard]] inline unsigned short sanitizing_inc(unsigned short value)
+{
+    int res = value + 1;
+    assert(res <= std::numeric_limits<unsigned short>::max()
+           && "nValue was supposed to be incrementable without overflow");
+    return static_cast<unsigned short>(res);
+}
+
+[[nodiscard]] inline unsigned short sanitizing_dec(unsigned short value)
+{
+    int res = value - 1;
+    assert(res >= 0 && "nValue was supposed to be decrementable without 
underflow");
+    return static_cast<unsigned short>(res);
+}
+
+[[nodiscard]] inline short sanitizing_inc(short value)
+{
+    int res = value + 1;
+    assert(res >= std::numeric_limits<short>::min() && res <= 
std::numeric_limits<short>::max()
+           && "nValue was supposed to be incrementable without overflow");
+    return static_cast<short>(res);
+}
+
+[[nodiscard]] inline short sanitizing_dec(short value)
+{
+    int res = value - 1;
+    assert(res >= std::numeric_limits<short>::min() && res <= 
std::numeric_limits<short>::max()
+           && "nValue was supposed to be decrementable without underflow");
+    return static_cast<short>(res);
+}
+
+// A hammer that can be used when coverity refuses to accept that code is safe
+// from overflow.
+template <typename T> inline void untaint_for_overrun([[maybe_unused]] T& a)
+{
+#if defined(__COVERITY__) && __COVERITY_MAJOR__ <= 2024
+    __coverity_mark_pointee_as_sanitized__(&a, OVERRUN);
+#endif
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/lotuswordpro/source/filter/lwptablelayout.cxx 
b/lotuswordpro/source/filter/lwptablelayout.cxx
index f940b8c7d672..e04e664f0740 100644
--- a/lotuswordpro/source/filter/lwptablelayout.cxx
+++ b/lotuswordpro/source/filter/lwptablelayout.cxx
@@ -80,6 +80,7 @@
 #include <xfilter/xfnumberstyle.hxx>
 #include <xfilter/xfparastyle.hxx>
 #include <o3tl/sorted_vector.hxx>
+#include <o3tl/untaint.hxx>
 #include <sal/log.hxx>
 #include <comphelper/configuration.hxx>
 
diff --git a/sal/rtl/string.cxx b/sal/rtl/string.cxx
index 33d7f8d076f2..cf53f84bac9a 100644
--- a/sal/rtl/string.cxx
+++ b/sal/rtl/string.cxx
@@ -22,6 +22,7 @@
 #include <cassert>
 #include <cstdlib>
 
+#include <o3tl/untaint.hxx>
 #include <osl/diagnose.h>
 #include <rtl/tencinfo.h>
 
@@ -380,7 +381,9 @@ sal_Int32 SAL_CALL rtl_str_indexOfChar(const char* pStr, 
char c) noexcept
 
 sal_Int32 SAL_CALL rtl_str_indexOfChar_WithLength(const char* pStr, sal_Int32 
nLen, char c) noexcept
 {
-    return rtl::str::indexOfChar_WithLength(pStr, nLen, c);
+    sal_Int32 ret = rtl::str::indexOfChar_WithLength(pStr, nLen, c);
+    o3tl::untaint_for_overrun(ret);
+    return ret;
 }
 
 sal_Int32 SAL_CALL rtl_str_lastIndexOfChar(const char* pStr, char c) noexcept
@@ -401,7 +404,9 @@ sal_Int32 SAL_CALL rtl_str_indexOfStr(const char* pStr, 
const char* pSubStr) noe
 sal_Int32 SAL_CALL rtl_str_indexOfStr_WithLength(const char* pStr, sal_Int32 
nStrLen,
                                                  const char* pSubStr, 
sal_Int32 nSubLen) noexcept
 {
-    return rtl::str::indexOfStr_WithLength(pStr, nStrLen, pSubStr, nSubLen);
+    sal_Int32 ret = rtl::str::indexOfStr_WithLength(pStr, nStrLen, pSubStr, 
nSubLen);
+    o3tl::untaint_for_overrun(ret);
+    return ret;
 }
 
 sal_Int32 SAL_CALL rtl_str_lastIndexOfStr(const char* pStr, const char* 
pSubStr) noexcept
diff --git a/sal/rtl/ustring.cxx b/sal/rtl/ustring.cxx
index e05ed08c3ddc..ad71026a9c2a 100644
--- a/sal/rtl/ustring.cxx
+++ b/sal/rtl/ustring.cxx
@@ -26,6 +26,7 @@
 
 #include <config_options.h>
 #include <o3tl/string_view.hxx>
+#include <o3tl/untaint.hxx>
 #include <osl/diagnose.h>
 #include <osl/interlck.h>
 #include <osl/mutex.h>
@@ -966,7 +967,9 @@ sal_Int32 SAL_CALL rtl_ustr_indexOfChar(const sal_Unicode* 
pStr, sal_Unicode c)
 sal_Int32 SAL_CALL rtl_ustr_indexOfChar_WithLength(const sal_Unicode* pStr, 
sal_Int32 nLen,
                                                    sal_Unicode c) noexcept
 {
-    return rtl::str::indexOfChar_WithLength(pStr, nLen, c);
+    sal_Int32 nRet = rtl::str::indexOfChar_WithLength(pStr, nLen, c);
+    o3tl::untaint_for_overrun(nRet);
+    return nRet;
 }
 
 sal_Int32 SAL_CALL rtl_ustr_lastIndexOfChar(const sal_Unicode* pStr, 
sal_Unicode c) noexcept
@@ -988,7 +991,9 @@ sal_Int32 SAL_CALL rtl_ustr_indexOfStr(const sal_Unicode* 
pStr, const sal_Unicod
 sal_Int32 SAL_CALL rtl_ustr_indexOfStr_WithLength(const sal_Unicode* pStr, 
sal_Int32 nStrLen,
                                                   const sal_Unicode* pSubStr, 
sal_Int32 nSubLen) noexcept
 {
-    return rtl::str::indexOfStr_WithLength(pStr, nStrLen, pSubStr, nSubLen);
+    sal_Int32 nRet = rtl::str::indexOfStr_WithLength(pStr, nStrLen, pSubStr, 
nSubLen);
+    o3tl::untaint_for_overrun(nRet);
+    return nRet;
 }
 
 sal_Int32 SAL_CALL rtl_ustr_lastIndexOfStr(const sal_Unicode* pStr, const 
sal_Unicode* pSubStr) noexcept
diff --git a/sc/inc/kahan.hxx b/sc/inc/kahan.hxx
index de3014b42ed9..9616a6e9e76b 100644
--- a/sc/inc/kahan.hxx
+++ b/sc/inc/kahan.hxx
@@ -9,6 +9,7 @@
 
 #pragma once
 
+#include <o3tl/untaint.hxx>
 #include <rtl/math.hxx>
 #include <cmath>
 
diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index e179081ce6df..f76c534dfdd9 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -21,6 +21,7 @@
 
 #include <editeng/boxitem.hxx>
 #include <editeng/editobj.hxx>
+#include <o3tl/untaint.hxx>
 #include <svx/svditer.hxx>
 #include <sfx2/docfile.hxx>
 #include <svl/numformat.hxx>
diff --git a/sc/source/core/tool/subtotal.cxx b/sc/source/core/tool/subtotal.cxx
index ed9c6c478127..498e94f4f0f6 100644
--- a/sc/source/core/tool/subtotal.cxx
+++ b/sc/source/core/tool/subtotal.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <subtotal.hxx>
+#include <o3tl/untaint.hxx>
 #include <sal/mathconf.h>
 #include <cfloat>
 
diff --git a/sc/source/filter/excel/impop.cxx b/sc/source/filter/excel/impop.cxx
index 173049091223..d6faaa731f35 100644
--- a/sc/source/filter/excel/impop.cxx
+++ b/sc/source/filter/excel/impop.cxx
@@ -24,7 +24,7 @@
 
 #include <scitems.hxx>
 
-#include <o3tl/safeint.hxx>
+#include <o3tl/untaint.hxx>
 #include <sfx2/docfile.hxx>
 #include <svx/svxids.hrc>
 #include <svl/numformat.hxx>
diff --git a/sc/source/filter/excel/xistream.cxx 
b/sc/source/filter/excel/xistream.cxx
index c4aa3c2b502f..ebb927ae8137 100644
--- a/sc/source/filter/excel/xistream.cxx
+++ b/sc/source/filter/excel/xistream.cxx
@@ -19,7 +19,7 @@
 
 #include <comphelper/docpasswordhelper.hxx>
 #include <comphelper/sequenceashashmap.hxx>
-#include <o3tl/safeint.hxx>
+#include <o3tl/untaint.hxx>
 #include <osl/thread.h>
 #include <osl/diagnose.h>
 #include <sal/log.hxx>
diff --git a/sc/source/filter/excel/xlformula.cxx 
b/sc/source/filter/excel/xlformula.cxx
index 2f8b2756d6c9..742557f0f822 100644
--- a/sc/source/filter/excel/xlformula.cxx
+++ b/sc/source/filter/excel/xlformula.cxx
@@ -26,6 +26,7 @@
 #include <xlroot.hxx>
 
 #include <comphelper/string.hxx>
+#include <o3tl/untaint.hxx>
 #include <svl/sharedstringpool.hxx>
 
 using namespace ::formula;
diff --git a/sc/source/filter/excel/xltoolbar.cxx 
b/sc/source/filter/excel/xltoolbar.cxx
index eb030f155654..1e81a94df0cd 100644
--- a/sc/source/filter/excel/xltoolbar.cxx
+++ b/sc/source/filter/excel/xltoolbar.cxx
@@ -8,7 +8,7 @@
  */
 #include "xltoolbar.hxx"
 #include <sal/log.hxx>
-#include <o3tl/safeint.hxx>
+#include <o3tl/untaint.hxx>
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/ui/XUIConfigurationPersistence.hpp>
 #include <com/sun/star/ui/theModuleUIConfigurationManagerSupplier.hpp>
diff --git a/scaddins/source/analysis/analysishelper.cxx 
b/scaddins/source/analysis/analysishelper.cxx
index d228667e25b9..7443dc2cc4ac 100644
--- a/scaddins/source/analysis/analysishelper.cxx
+++ b/scaddins/source/analysis/analysishelper.cxx
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <stdio.h>
 #include <o3tl/any.hxx>
+#include <o3tl/untaint.hxx>
 #include <rtl/math.hxx>
 #include <algorithm>
 #include <cmath>
diff --git a/scaddins/source/analysis/financial.cxx 
b/scaddins/source/analysis/financial.cxx
index dcc7f0554e9f..2128ea68d09f 100644
--- a/scaddins/source/analysis/financial.cxx
+++ b/scaddins/source/analysis/financial.cxx
@@ -21,6 +21,7 @@
 #include "analysis.hxx"
 #include "analysishelper.hxx"
 #include <o3tl/temporary.hxx>
+#include <o3tl/untaint.hxx>
 
 using namespace sca::analysis;
 
diff --git a/svl/source/numbers/zforscan.cxx b/svl/source/numbers/zforscan.cxx
index a63c91ee7716..430e7b6e3306 100644
--- a/svl/source/numbers/zforscan.cxx
+++ b/svl/source/numbers/zforscan.cxx
@@ -20,6 +20,7 @@
 
 #include <stdlib.h>
 #include <comphelper/string.hxx>
+#include <o3tl/untaint.hxx>
 #include <sal/log.hxx>
 #include <tools/debug.hxx>
 #include <i18nlangtag/mslangid.hxx>
diff --git a/svx/source/customshapes/EnhancedCustomShapeFunctionParser.cxx 
b/svx/source/customshapes/EnhancedCustomShapeFunctionParser.cxx
index f3ef252849bd..b7c45af71a86 100644
--- a/svx/source/customshapes/EnhancedCustomShapeFunctionParser.cxx
+++ b/svx/source/customshapes/EnhancedCustomShapeFunctionParser.cxx
@@ -19,7 +19,7 @@
 
 #include <sal/config.h>
 
-#include <o3tl/safeint.hxx>
+#include <o3tl/untaint.hxx>
 #include <svx/EnhancedCustomShape2d.hxx>
 #include <rtl/ustring.hxx>
 #include <sal/log.hxx>
diff --git a/sw/source/core/table/swtable.cxx b/sw/source/core/table/swtable.cxx
index c013e3164c8b..0d737127b621 100644
--- a/sw/source/core/table/swtable.cxx
+++ b/sw/source/core/table/swtable.cxx
@@ -60,6 +60,7 @@
 #include <vector>
 #include <calbck.hxx>
 #include <o3tl/string_view.hxx>
+#include <o3tl/untaint.hxx>
 #include <svl/numformat.hxx>
 #include <txtfld.hxx>
 #include <rolbck.hxx>
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
index 31a8e6804b35..0c74d3ecc7aa 100644
--- a/sw/source/filter/ww8/ww8scan.cxx
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -38,7 +38,7 @@
 #include <comphelper/string.hxx>
 #include <unotools/localedatawrapper.hxx>
 #include <i18nlangtag/lang.h>
-#include <o3tl/safeint.hxx>
+#include <o3tl/untaint.hxx>
 #include <tools/stream.hxx>
 
 #include <vcl/settings.hxx>
diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
index 591858fa88f5..39c48b81a17b 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -20,7 +20,7 @@
 #include <sal/config.h>
 
 #include <osl/diagnose.h>
-#include <o3tl/safeint.hxx>
+#include <o3tl/untaint.hxx>
 #include <sal/log.hxx>
 #include <svl/style.hxx>
 #include <utility>
diff --git a/tools/source/stream/stream.cxx b/tools/source/stream/stream.cxx
index 74926734138d..16e5e0fbb703 100644
--- a/tools/source/stream/stream.cxx
+++ b/tools/source/stream/stream.cxx
@@ -28,6 +28,7 @@
 #include <string.h>
 
 #include <o3tl/safeint.hxx>
+#include <o3tl/untaint.hxx>
 #include <osl/endian.h>
 #include <osl/diagnose.h>
 #include <rtl/strbuf.hxx>

Reply via email to