accessibility/source/extended/accessibletabbar.cxx                  |    3 -
 accessibility/source/extended/accessibletabbarpagelist.cxx          |   13 
+++--
 accessibility/source/standard/accessiblemenubasecomponent.cxx       |   21 
++++-----
 accessibility/source/standard/vclxaccessiblelist.cxx                |    2 
 accessibility/source/standard/vclxaccessiblestatusbar.cxx           |   15 
+++---
 accessibility/source/standard/vclxaccessibletabcontrol.cxx          |   10 ++--
 basic/source/classes/sb.cxx                                         |    5 +-
 basic/source/sbx/sbxarray.cxx                                       |    2 
 basic/source/sbx/sbxcoll.cxx                                        |    5 +-
 chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx |    3 -
 chart2/source/model/main/BaseCoordinateSystem.cxx                   |    2 
 chart2/source/tools/AxisHelper.cxx                                  |    5 +-
 chart2/source/tools/CommonConverters.cxx                            |    3 -
 chart2/source/tools/DiagramHelper.cxx                               |    7 +--
 chart2/source/tools/InternalData.cxx                                |    5 +-
 chart2/source/tools/ObjectIdentifier.cxx                            |    7 +--
 chart2/source/tools/RegressionCurveHelper.cxx                       |    3 -
 chart2/source/view/axes/VCartesianAxis.cxx                          |    3 -
 chart2/source/view/charttypes/AreaChart.cxx                         |    3 -
 chart2/source/view/charttypes/NetChart.cxx                          |    3 -
 chart2/source/view/charttypes/VSeriesPlotter.cxx                    |    5 +-
 connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx      |    3 -
 connectivity/source/commontools/paramwrapper.cxx                    |    3 -
 connectivity/source/drivers/file/FPreparedStatement.cxx             |    3 -
 connectivity/source/drivers/file/FResultSet.cxx                     |    3 -
 connectivity/source/drivers/file/FResultSetMetaData.cxx             |    3 -
 connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx     |    3 -
 connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx             |    2 
 connectivity/source/drivers/mysqlc/mysqlc_resultsetmetadata.cxx     |    3 -
 connectivity/source/drivers/postgresql/pq_preparedstatement.cxx     |    3 -
 connectivity/source/drivers/postgresql/pq_xcolumns.cxx              |    3 -
 connectivity/source/drivers/postgresql/pq_xcontainer.cxx            |    7 +--
 connectivity/source/drivers/postgresql/pq_xindexes.cxx              |    3 -
 connectivity/source/drivers/postgresql/pq_xkeys.cxx                 |    3 -
 connectivity/source/drivers/postgresql/pq_xtables.cxx               |    3 -
 connectivity/source/drivers/postgresql/pq_xusers.cxx                |    3 -
 connectivity/source/drivers/postgresql/pq_xviews.cxx                |    3 -
 connectivity/source/inc/file/FResultSet.hxx                         |    3 -
 connectivity/source/parse/sqliterator.cxx                           |    5 +-
 dbaccess/source/core/api/RowSet.cxx                                 |    2 
 dbaccess/source/core/api/RowSetCache.cxx                            |    8 +--
 dbaccess/source/core/api/StaticSet.cxx                              |    5 +-
 dbaccess/source/core/dataaccess/bookmarkcontainer.cxx               |    3 -
 dbaccess/source/core/dataaccess/definitioncontainer.cxx             |    3 -
 dbaccess/source/ui/control/ColumnControlWindow.cxx                  |    3 -
 dbaccess/source/ui/dlg/indexfieldscontrol.cxx                       |    3 -
 dbaccess/source/ui/tabledesign/TEditControl.cxx                     |    3 -
 dbaccess/source/ui/uno/copytablewizard.cxx                          |    3 -
 desktop/source/deployment/gui/dp_gui_extlistbox.cxx                 |   11 ++--
 drawinglayer/source/processor3d/zbufferprocessor3d.cxx              |    3 -
 editeng/source/editeng/editdoc.cxx                                  |   23 
+++++-----
 editeng/source/editeng/editeng.cxx                                  |    3 -
 editeng/source/editeng/impedit2.cxx                                 |    2 
 extensions/source/propctrlr/formmetadata.cxx                        |    3 -
 extensions/source/propctrlr/genericpropertyhandler.cxx              |    3 -
 forms/source/component/ListBox.cxx                                  |    2 
 forms/source/component/entrylisthelper.cxx                          |    9 ++-
 forms/source/misc/InterfaceContainer.cxx                            |    9 ++-
 forms/source/xforms/binding.cxx                                     |    3 -
 i18nutil/source/utility/scripttypedetector.cxx                      |    5 +-
 linguistic/source/lngopt.cxx                                        |    4 +
 oox/source/ppt/comments.cxx                                         |    3 -
 reportdesign/source/core/api/Functions.cxx                          |    3 -
 reportdesign/source/core/api/Groups.cxx                             |    3 -
 reportdesign/source/core/api/ReportControlModel.cxx                 |    3 -
 reportdesign/source/core/api/ReportDefinition.cxx                   |    3 -
 sc/source/core/data/dptabsrc.cxx                                    |    2 
 sc/source/core/data/markmulti.cxx                                   |    4 +
 sc/source/core/tool/queryparam.cxx                                  |    3 -
 sc/source/filter/oox/pivottablebuffer.cxx                           |    3 -
 sc/source/ui/docshell/impex.cxx                                     |    2 
 sc/source/ui/unoobj/appluno.cxx                                     |    3 -
 sc/source/ui/unoobj/chart2uno.cxx                                   |    2 
 sc/source/ui/unoobj/dapiuno.cxx                                     |    5 +-
 sc/source/ui/unoobj/fmtuno.cxx                                      |    3 -
 sc/source/ui/unoobj/nameuno.cxx                                     |    3 -
 sc/source/ui/vba/vbafiledialogitems.cxx                             |    5 +-
 sd/source/filter/html/buttonset.cxx                                 |    5 +-
 sd/source/ui/app/sdxfer.cxx                                         |    3 -
 sd/source/ui/slideshow/slideshowimpl.cxx                            |    3 -
 sd/source/ui/slidesorter/model/SlideSorterModel.cxx                 |    3 -
 sd/source/ui/unoidl/unocpres.cxx                                    |    5 +-
 sdext/source/pdfimport/tree/imagecontainer.cxx                      |    3 -
 sdext/source/presenter/PresenterAccessibility.cxx                   |    4 -
 sdext/source/presenter/PresenterTextView.cxx                        |    2 
 sfx2/source/dialog/filtergrouping.cxx                               |    3 -
 sfx2/source/sidebar/FocusManager.cxx                                |    5 +-
 svtools/source/brwbox/brwbox1.cxx                                   |    2 
 svx/source/form/fmshimp.cxx                                         |    4 -
 svx/source/form/formcontroller.cxx                                  |    2 
 svx/source/table/tablelayouter.hxx                                  |    5 +-
 sw/source/core/access/acctable.cxx                                  |    4 -
 sw/source/core/unocore/unostyle.cxx                                 |    2 
 sw/source/filter/ww8/ww8toolbar.cxx                                 |    2 
 sw/source/uibase/uiview/viewmdi.cxx                                 |    3 -
 sw/source/uibase/uno/unoatxt.cxx                                    |    2 
 vbahelper/source/msforms/vbacontrols.cxx                            |    3 -
 vcl/unx/generic/window/salframe.cxx                                 |    5 +-
 vcl/unx/gtk3/a11y/atktextattributes.cxx                             |    3 -
 vcl/unx/gtk3/glomenu.cxx                                            |   22 
+++++----
 xmloff/source/chart/SchXMLChartContext.cxx                          |    3 -
 xmloff/source/style/xmlprmap.cxx                                    |   15 
+++---
 xmlsecurity/source/gpg/XMLSecurityContext.cxx                       |    5 +-
 xmlsecurity/source/xmlsec/nss/xmlsecuritycontext_nssimpl.cxx        |    5 +-
 104 files changed, 279 insertions(+), 191 deletions(-)

New commits:
commit 5060c5015882b7109c54598c4ea858949beafc43
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Tue May 24 15:26:06 2022 +0200
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Tue May 24 16:50:03 2022 +0200

    Use o3tl::make_unsigned in some places
    
    ...where a signed and an unsigned value are compared, and the signed value 
has
    just been proven to be non-negative here
    
    Change-Id: I20600d61a5d59d739bc1bee838c0038e4611aec2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134875
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/accessibility/source/extended/accessibletabbar.cxx 
b/accessibility/source/extended/accessibletabbar.cxx
index e983c1e47471..8bf2d7addc1d 100644
--- a/accessibility/source/extended/accessibletabbar.cxx
+++ b/accessibility/source/extended/accessibletabbar.cxx
@@ -30,6 +30,7 @@
 #include <unotools/accessiblestatesethelper.hxx>
 #include <unotools/accessiblerelationsethelper.hxx>
 #include <i18nlangtag/languagetag.hxx>
+#include <o3tl/safeint.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/settings.hxx>
 #include <toolkit/awt/vclxfont.hxx>
@@ -228,7 +229,7 @@ namespace accessibility
     {
         OExternalLockGuard aGuard( this );
 
-        if ( i < 0 || i >= 
static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+        if ( i < 0 || o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
             throw IndexOutOfBoundsException();
 
         Reference< XAccessible > xChild = m_aAccessibleChildren[i];
diff --git a/accessibility/source/extended/accessibletabbarpagelist.cxx 
b/accessibility/source/extended/accessibletabbarpagelist.cxx
index 3c7f9976e0af..a65750fbd4b3 100644
--- a/accessibility/source/extended/accessibletabbarpagelist.cxx
+++ b/accessibility/source/extended/accessibletabbarpagelist.cxx
@@ -25,6 +25,7 @@
 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
 #include <cppuhelper/supportsservice.hxx>
+#include <o3tl/safeint.hxx>
 #include <unotools/accessiblestatesethelper.hxx>
 #include <unotools/accessiblerelationsethelper.hxx>
 #include <vcl/svapp.hxx>
@@ -73,7 +74,7 @@ namespace accessibility
     {
         NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), 
Any() );
 
-        if ( i >= 0 && i < 
static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+        if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
         {
             Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
             if ( xChild.is() )
@@ -88,7 +89,7 @@ namespace accessibility
 
     void AccessibleTabBarPageList::UpdatePageText( sal_Int32 i )
     {
-        if ( i < 0 || i >= 
static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+        if ( i < 0 || o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
             return;
 
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
@@ -106,7 +107,7 @@ namespace accessibility
 
     void AccessibleTabBarPageList::InsertChild( sal_Int32 i )
     {
-        if ( i < 0 || i > static_cast<sal_Int32>(m_aAccessibleChildren.size()) 
)
+        if ( i < 0 || o3tl::make_unsigned(i) > m_aAccessibleChildren.size() )
             return;
 
         // insert entry in child list
@@ -125,7 +126,7 @@ namespace accessibility
 
     void AccessibleTabBarPageList::RemoveChild( sal_Int32 i )
     {
-        if ( i < 0 || i >= 
static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+        if ( i < 0 || o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
             return;
 
         // get the accessible of the removed page
@@ -150,8 +151,8 @@ namespace accessibility
 
     void AccessibleTabBarPageList::MoveChild( sal_Int32 i, sal_Int32 j )
     {
-        if ( !(i >= 0 && i < 
static_cast<sal_Int32>(m_aAccessibleChildren.size()) &&
-             j >= 0 && j <= 
static_cast<sal_Int32>(m_aAccessibleChildren.size())) )
+        if ( !(i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() 
&&
+             j >= 0 && o3tl::make_unsigned(j) <= m_aAccessibleChildren.size()) 
)
             return;
 
         if ( i < j )
diff --git a/accessibility/source/standard/accessiblemenubasecomponent.cxx 
b/accessibility/source/standard/accessiblemenubasecomponent.cxx
index bce5968c7cfc..f28bf8ad0570 100644
--- a/accessibility/source/standard/accessiblemenubasecomponent.cxx
+++ b/accessibility/source/standard/accessiblemenubasecomponent.cxx
@@ -27,6 +27,7 @@
 #include <com/sun/star/accessibility/AccessibleRole.hpp>
 #include <com/sun/star/accessibility/AccessibleStateType.hpp>
 #include <cppuhelper/supportsservice.hxx>
+#include <o3tl/safeint.hxx>
 #include <unotools/accessiblestatesethelper.hxx>
 #include <vcl/menu.hxx>
 #include <vcl/vclevent.hxx>
@@ -195,7 +196,7 @@ void OAccessibleMenuBaseComponent::SetChecked( bool 
bChecked )
 
 void OAccessibleMenuBaseComponent::UpdateEnabled( sal_Int32 i, bool bEnabled )
 {
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -210,7 +211,7 @@ void OAccessibleMenuBaseComponent::UpdateEnabled( sal_Int32 
i, bool bEnabled )
 
 void OAccessibleMenuBaseComponent::UpdateFocused( sal_Int32 i, bool bFocused )
 {
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -242,7 +243,7 @@ void OAccessibleMenuBaseComponent::UpdateSelected( 
sal_Int32 i, bool bSelected )
 {
     NotifyAccessibleEvent( AccessibleEventId::SELECTION_CHANGED, Any(), Any() 
);
 
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -257,7 +258,7 @@ void OAccessibleMenuBaseComponent::UpdateSelected( 
sal_Int32 i, bool bSelected )
 
 void OAccessibleMenuBaseComponent::UpdateChecked( sal_Int32 i, bool bChecked )
 {
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -272,7 +273,7 @@ void OAccessibleMenuBaseComponent::UpdateChecked( sal_Int32 
i, bool bChecked )
 
 void OAccessibleMenuBaseComponent::UpdateAccessibleName( sal_Int32 i )
 {
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -287,7 +288,7 @@ void OAccessibleMenuBaseComponent::UpdateAccessibleName( 
sal_Int32 i )
 
 void OAccessibleMenuBaseComponent::UpdateItemText( sal_Int32 i )
 {
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -376,12 +377,12 @@ Reference< XAccessible > 
OAccessibleMenuBaseComponent::GetChildAt( const awt::Po
 
 void OAccessibleMenuBaseComponent::InsertChild( sal_Int32 i )
 {
-    if ( i > static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
-        i = m_aAccessibleChildren.size();
-
     if ( i < 0 )
         return;
 
+    if ( o3tl::make_unsigned(i) > m_aAccessibleChildren.size() )
+        i = m_aAccessibleChildren.size();
+
     // insert entry in child list
     m_aAccessibleChildren.insert( m_aAccessibleChildren.begin() + i, 
Reference< XAccessible >() );
 
@@ -410,7 +411,7 @@ void OAccessibleMenuBaseComponent::InsertChild( sal_Int32 i 
)
 
 void OAccessibleMenuBaseComponent::RemoveChild( sal_Int32 i )
 {
-    if ( i < 0 || i >= static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i < 0 || o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
         return;
 
     // keep the accessible of the removed item
diff --git a/accessibility/source/standard/vclxaccessiblelist.cxx 
b/accessibility/source/standard/vclxaccessiblelist.cxx
index 353312e6bbae..bb81350f5dd0 100644
--- a/accessibility/source/standard/vclxaccessiblelist.cxx
+++ b/accessibility/source/standard/vclxaccessiblelist.cxx
@@ -547,7 +547,7 @@ Reference<XAccessible> SAL_CALL 
VCLXAccessibleList::getAccessibleChild (sal_Int3
 
     Reference< XAccessible > xChild;
     // search for the child
-    if ( i >= static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
         xChild = CreateChild (i);
     else
     {
diff --git a/accessibility/source/standard/vclxaccessiblestatusbar.cxx 
b/accessibility/source/standard/vclxaccessiblestatusbar.cxx
index bd70676f58cc..d6e3e0ef5cad 100644
--- a/accessibility/source/standard/vclxaccessiblestatusbar.cxx
+++ b/accessibility/source/standard/vclxaccessiblestatusbar.cxx
@@ -22,6 +22,7 @@
 #include <toolkit/helper/convert.hxx>
 #include <com/sun/star/accessibility/AccessibleEventId.hpp>
 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
+#include <o3tl/safeint.hxx>
 #include <vcl/status.hxx>
 #include <vcl/vclevent.hxx>
 
@@ -47,7 +48,7 @@ VCLXAccessibleStatusBar::VCLXAccessibleStatusBar( VCLXWindow* 
pVCLXWindow )
 
 void VCLXAccessibleStatusBar::UpdateShowing( sal_Int32 i, bool bShowing )
 {
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -62,7 +63,7 @@ void VCLXAccessibleStatusBar::UpdateShowing( sal_Int32 i, 
bool bShowing )
 
 void VCLXAccessibleStatusBar::UpdateItemName( sal_Int32 i )
 {
-    if ( i < 0 || i >= static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i < 0 || o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
         return;
 
     Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
@@ -80,7 +81,7 @@ void VCLXAccessibleStatusBar::UpdateItemName( sal_Int32 i )
 
 void VCLXAccessibleStatusBar::UpdateItemText( sal_Int32 i )
 {
-    if ( i < 0 || i >= static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i < 0 || o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
         return;
 
     Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
@@ -98,7 +99,7 @@ void VCLXAccessibleStatusBar::UpdateItemText( sal_Int32 i )
 
 void VCLXAccessibleStatusBar::InsertChild( sal_Int32 i )
 {
-    if ( i < 0 || i > static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i < 0 || o3tl::make_unsigned(i) > m_aAccessibleChildren.size() )
         return;
 
     // insert entry in child list
@@ -117,7 +118,7 @@ void VCLXAccessibleStatusBar::InsertChild( sal_Int32 i )
 
 void VCLXAccessibleStatusBar::RemoveChild( sal_Int32 i )
 {
-    if ( i < 0 || i >= static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i < 0 || o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
         return;
 
     // get the accessible of the removed page
@@ -290,7 +291,7 @@ Reference< XAccessible > 
VCLXAccessibleStatusBar::getAccessibleChild( sal_Int32
 {
     OExternalLockGuard aGuard( this );
 
-    if ( i < 0 || i >= static_cast<sal_Int32> (m_aAccessibleChildren.size()) )
+    if ( i < 0 || o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
         throw IndexOutOfBoundsException();
 
     Reference< XAccessible > xChild = m_aAccessibleChildren[i];
@@ -323,7 +324,7 @@ Reference< XAccessible > 
VCLXAccessibleStatusBar::getAccessibleAtPoint( const aw
     {
         sal_uInt16 nItemId = m_pStatusBar->GetItemId( VCLPoint( rPoint ) );
         sal_Int32 nItemPos = m_pStatusBar->GetItemPos( nItemId );
-        if ( nItemPos >= 0 && nItemPos < 
static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+        if ( nItemPos >= 0 && o3tl::make_unsigned(nItemPos) < 
m_aAccessibleChildren.size() )
             xChild = getAccessibleChild( nItemPos );
     }
 
diff --git a/accessibility/source/standard/vclxaccessibletabcontrol.cxx 
b/accessibility/source/standard/vclxaccessibletabcontrol.cxx
index 20e2ff120cc3..c1ede974148b 100644
--- a/accessibility/source/standard/vclxaccessibletabcontrol.cxx
+++ b/accessibility/source/standard/vclxaccessibletabcontrol.cxx
@@ -72,7 +72,7 @@ void VCLXAccessibleTabControl::UpdateFocused()
 
 void VCLXAccessibleTabControl::UpdateSelected( sal_Int32 i, bool bSelected )
 {
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -87,7 +87,7 @@ void VCLXAccessibleTabControl::UpdateSelected( sal_Int32 i, 
bool bSelected )
 
 void VCLXAccessibleTabControl::UpdatePageText( sal_Int32 i )
 {
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -102,7 +102,7 @@ void VCLXAccessibleTabControl::UpdatePageText( sal_Int32 i )
 
 void VCLXAccessibleTabControl::UpdateTabPage( sal_Int32 i, bool bNew )
 {
-    if ( i >= 0 && i < static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i >= 0 && o3tl::make_unsigned(i) < m_aAccessibleChildren.size() )
     {
         Reference< XAccessible > xChild( m_aAccessibleChildren[i] );
         if ( xChild.is() )
@@ -117,7 +117,7 @@ void VCLXAccessibleTabControl::UpdateTabPage( sal_Int32 i, 
bool bNew )
 
 void VCLXAccessibleTabControl::InsertChild( sal_Int32 i )
 {
-    if ( i < 0 || i > static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i < 0 || o3tl::make_unsigned(i) > m_aAccessibleChildren.size() )
         return;
 
     // insert entry in child list
@@ -136,7 +136,7 @@ void VCLXAccessibleTabControl::InsertChild( sal_Int32 i )
 
 void VCLXAccessibleTabControl::RemoveChild( sal_Int32 i )
 {
-    if ( i < 0 || i >= static_cast<sal_Int32>(m_aAccessibleChildren.size()) )
+    if ( i < 0 || o3tl::make_unsigned(i) >= m_aAccessibleChildren.size() )
         return;
 
     // get the accessible of the removed page
diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx
index 570447246cf9..4e3e716a56ca 100644
--- a/basic/source/classes/sb.cxx
+++ b/basic/source/classes/sb.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <sb.hxx>
+#include <o3tl/safeint.hxx>
 #include <rtl/ustrbuf.hxx>
 #include <tools/stream.hxx>
 #include <tools/debug.hxx>
@@ -2172,7 +2173,7 @@ void BasicCollection::CollItem( SbxArray* pPar_ )
     SbxVariable* pRes = nullptr;
     SbxVariable* p = pPar_->Get(1);
     sal_Int32 nIndex = implGetIndex( p );
-    if (nIndex >= 0 && nIndex < static_cast<sal_Int32>(xItemArray->Count()))
+    if (nIndex >= 0 && o3tl::make_unsigned(nIndex) < xItemArray->Count())
     {
         pRes = xItemArray->Get(nIndex);
     }
@@ -2196,7 +2197,7 @@ void BasicCollection::CollRemove( SbxArray* pPar_ )
 
     SbxVariable* p = pPar_->Get(1);
     sal_Int32 nIndex = implGetIndex( p );
-    if (nIndex >= 0 && nIndex < static_cast<sal_Int32>(xItemArray->Count()))
+    if (nIndex >= 0 && o3tl::make_unsigned(nIndex) < xItemArray->Count())
     {
         xItemArray->Remove( nIndex );
 
diff --git a/basic/source/sbx/sbxarray.cxx b/basic/source/sbx/sbxarray.cxx
index 53c0ed36fa73..4bd933b126ad 100644
--- a/basic/source/sbx/sbxarray.cxx
+++ b/basic/source/sbx/sbxarray.cxx
@@ -448,7 +448,7 @@ void SbxDimArray::unoAddDim( sal_Int32 lb, sal_Int32 ub )
 
 bool SbxDimArray::GetDim( sal_Int32 n, sal_Int32& rlb, sal_Int32& rub ) const
 {
-    if( n < 1 || n > static_cast<sal_Int32>(m_vDimensions.size()) )
+    if( n < 1 || o3tl::make_unsigned(n) > m_vDimensions.size() )
     {
         SetError( ERRCODE_BASIC_OUT_OF_RANGE );
         rub = rlb = 0;
diff --git a/basic/source/sbx/sbxcoll.cxx b/basic/source/sbx/sbxcoll.cxx
index ea4eb4cdea14..328115d4f6fa 100644
--- a/basic/source/sbx/sbxcoll.cxx
+++ b/basic/source/sbx/sbxcoll.cxx
@@ -17,6 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <o3tl/safeint.hxx>
 #include <tools/stream.hxx>
 
 #include <basic/sbx.hxx>
@@ -188,7 +189,7 @@ void SbxCollection::CollItem( SbxArray* pPar_ )
         else
         {
             short n = p->GetInteger();
-            if (n >= 1 && n <= static_cast<sal_Int32>(pObjs->Count()))
+            if (n >= 1 && o3tl::make_unsigned(n) <= pObjs->Count())
             {
                 pRes = pObjs->Get(static_cast<sal_uInt32>(n) - 1);
             }
@@ -210,7 +211,7 @@ void SbxCollection::CollRemove( SbxArray* pPar_ )
     else
     {
         short n = pPar_->Get(1)->GetInteger();
-        if (n < 1 || n > static_cast<sal_Int32>(pObjs->Count()))
+        if (n < 1 || o3tl::make_unsigned(n) > pObjs->Count())
             SetError( ERRCODE_BASIC_BAD_INDEX );
         else
             Remove(pObjs->Get(static_cast<sal_uInt32>(n) - 1));
diff --git 
a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx 
b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx
index 51c917751fbd..40e4df69c603 100644
--- a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx
@@ -39,6 +39,7 @@
 #include "WrappedTextRotationProperty.hxx"
 #include <unonames.hxx>
 
+#include <o3tl/safeint.hxx>
 #include <rtl/math.hxx>
 
 #include <algorithm>
@@ -560,7 +561,7 @@ rtl::Reference< DataSeries > 
DataSeriesPointWrapper::getDataSeries()
         std::vector< rtl::Reference< DataSeries > > aSeriesList =
             ::chart::DiagramHelper::getDataSeriesFromDiagram( xDiagram );
 
-        if( m_nSeriesIndexInNewAPI >= 0 && m_nSeriesIndexInNewAPI < 
static_cast<sal_Int32>(aSeriesList.size()) )
+        if( m_nSeriesIndexInNewAPI >= 0 && 
o3tl::make_unsigned(m_nSeriesIndexInNewAPI) < aSeriesList.size() )
             xSeries = aSeriesList[m_nSeriesIndexInNewAPI];
     }
 
diff --git a/chart2/source/model/main/BaseCoordinateSystem.cxx 
b/chart2/source/model/main/BaseCoordinateSystem.cxx
index 95faaed01bfd..41c7c766840c 100644
--- a/chart2/source/model/main/BaseCoordinateSystem.cxx
+++ b/chart2/source/model/main/BaseCoordinateSystem.cxx
@@ -264,7 +264,7 @@ const rtl::Reference< Axis > & 
BaseCoordinateSystem::getAxisByDimension2(
 
     OSL_ASSERT( m_aAllAxis.size() == static_cast< size_t >( 
m_nDimensionCount));
 
-    if( nAxisIndex < 0 || nAxisIndex > static_cast<sal_Int32>(m_aAllAxis[ 
nDimensionIndex ].size()) )
+    if( nAxisIndex < 0 || o3tl::make_unsigned(nAxisIndex) > m_aAllAxis[ 
nDimensionIndex ].size() )
         throw lang::IndexOutOfBoundsException();
 
     return m_aAllAxis[ nDimensionIndex ][nAxisIndex];
diff --git a/chart2/source/tools/AxisHelper.cxx 
b/chart2/source/tools/AxisHelper.cxx
index 95b50a9640f3..e34870052cec 100644
--- a/chart2/source/tools/AxisHelper.cxx
+++ b/chart2/source/tools/AxisHelper.cxx
@@ -38,6 +38,7 @@
 #include <unonames.hxx>
 #include <BaseCoordinateSystem.hxx>
 
+#include <o3tl/safeint.hxx>
 #include <unotools/saveopt.hxx>
 
 #include <com/sun/star/chart/ChartAxisPosition.hpp>
@@ -561,7 +562,7 @@ rtl::Reference< ::chart::BaseCoordinateSystem > 
AxisHelper::getCoordinateSystemB
     if(!xDiagram.is())
         return nullptr;
     auto & rCooSysList = xDiagram->getBaseCoordinateSystems();
-    if(0<=nIndex && nIndex < static_cast<sal_Int32>(rCooSysList.size()))
+    if(0<=nIndex && o3tl::make_unsigned(nIndex) < rCooSysList.size())
         return rCooSysList[nIndex];
     return nullptr;
 }
@@ -1048,7 +1049,7 @@ rtl::Reference< ChartType > 
AxisHelper::getChartTypeByIndex( const rtl::Referenc
     if( xCooSys.is() )
     {
         const std::vector< rtl::Reference< ChartType > > aChartTypeList( 
xCooSys->getChartTypes2() );
-        if( nIndex >= 0 && nIndex < 
static_cast<sal_Int32>(aChartTypeList.size()) )
+        if( nIndex >= 0 && o3tl::make_unsigned(nIndex) < aChartTypeList.size() 
)
             xChartType = aChartTypeList[nIndex];
     }
 
diff --git a/chart2/source/tools/CommonConverters.cxx 
b/chart2/source/tools/CommonConverters.cxx
index d61a635d425d..b68cd17e20c3 100644
--- a/chart2/source/tools/CommonConverters.cxx
+++ b/chart2/source/tools/CommonConverters.cxx
@@ -24,6 +24,7 @@
 #include <com/sun/star/chart2/data/XDataSequence.hpp>
 #include <com/sun/star/chart2/data/XNumericalDataSequence.hpp>
 #include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <basegfx/matrix/b3dhommatrix.hxx>
 #include <basegfx/polygon/b2dpolygontools.hxx>
@@ -227,7 +228,7 @@ drawing::Position3D getPointFromPoly( const 
std::vector<std::vector<css::drawing
 {
     drawing::Position3D aRet(0.0,0.0,0.0);
 
-    if( nPolyIndex>=0 && nPolyIndex<static_cast<sal_Int32>(rPolygon.size()))
+    if( nPolyIndex>=0 && o3tl::make_unsigned(nPolyIndex)<rPolygon.size())
     {
         if(nPointIndex<static_cast<sal_Int32>(rPolygon[nPolyIndex].size()))
         {
diff --git a/chart2/source/tools/DiagramHelper.cxx 
b/chart2/source/tools/DiagramHelper.cxx
index 4526550a9e99..258dff61d8db 100644
--- a/chart2/source/tools/DiagramHelper.cxx
+++ b/chart2/source/tools/DiagramHelper.cxx
@@ -50,6 +50,7 @@
 #include <com/sun/star/util/NumberFormat.hpp>
 #include <com/sun/star/util/XNumberFormatsSupplier.hpp>
 
+#include <o3tl/safeint.hxx>
 #include <unotools/saveopt.hxx>
 #include <rtl/math.hxx>
 #include <svl/numformat.hxx>
@@ -655,7 +656,7 @@ rtl::Reference< ChartType >
     for( rtl::Reference< BaseCoordinateSystem > const & coords : 
xDiagram->getBaseCoordinateSystems() )
     {
         const std::vector< rtl::Reference< ChartType > > & aChartTypeList( 
coords->getChartTypes2() );
-        if( nIndex >= 0 && nIndex < static_cast<sal_Int32>(nTypesSoFar + 
aChartTypeList.size()) )
+        if( nIndex >= 0 && o3tl::make_unsigned(nIndex) < nTypesSoFar + 
aChartTypeList.size() )
         {
             xChartType = aChartTypeList[nIndex - nTypesSoFar];
             break;
@@ -1211,7 +1212,7 @@ bool lcl_moveSeriesOrCheckIfMoveIsAllowed(
                                 else
                                     nNewSeriesIndex++;
 
-                                if( nNewSeriesIndex >= 0 && nNewSeriesIndex < 
static_cast<sal_Int32>(aSeriesList.size()) )
+                                if( nNewSeriesIndex >= 0 && 
o3tl::make_unsigned(nNewSeriesIndex) < aSeriesList.size() )
                                 {
                                     //move series in the same charttype
                                     bMovedOrMoveAllowed = true;
@@ -1232,7 +1233,7 @@ bool lcl_moveSeriesOrCheckIfMoveIsAllowed(
                                         {
                                             std::vector< rtl::Reference< 
DataSeries > > aOtherSeriesList = xFormerChartType->getDataSeries2();
                                             sal_Int32 nOtherSeriesIndex = 
aOtherSeriesList.size()-1;
-                                            if( nOtherSeriesIndex >= 0 && 
nOtherSeriesIndex < static_cast<sal_Int32>(aOtherSeriesList.size()) )
+                                            if( nOtherSeriesIndex >= 0 && 
o3tl::make_unsigned(nOtherSeriesIndex) < aOtherSeriesList.size() )
                                             {
                                                 rtl::Reference< DataSeries > 
xExchangeSeries( aOtherSeriesList[nOtherSeriesIndex] );
                                                 
aOtherSeriesList[nOtherSeriesIndex] = xGivenDataSeries;
diff --git a/chart2/source/tools/InternalData.cxx 
b/chart2/source/tools/InternalData.cxx
index dd48289e831c..b6fc1e09044f 100644
--- a/chart2/source/tools/InternalData.cxx
+++ b/chart2/source/tools/InternalData.cxx
@@ -22,6 +22,7 @@
 #include <strings.hrc>
 
 #include <comphelper/sequence.hxx>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 
 #ifdef DEBUG_CHART2_TOOLS
@@ -202,7 +203,7 @@ void InternalData::setComplexColumnLabel( sal_Int32 
nColumnIndex, vector< uno::A
 {
     if( nColumnIndex < 0 )
         return;
-    if( nColumnIndex >= static_cast< sal_Int32 >( m_aColumnLabels.size() ) )
+    if( o3tl::make_unsigned(nColumnIndex) >= m_aColumnLabels.size() )
     {
         m_aColumnLabels.resize(nColumnIndex+1);
         enlargeData( nColumnIndex+1, 0 );
@@ -216,7 +217,7 @@ void InternalData::setComplexRowLabel( sal_Int32 nRowIndex, 
vector< uno::Any >&&
 {
     if( nRowIndex < 0 )
         return;
-    if( nRowIndex >= static_cast< sal_Int32 >( m_aRowLabels.size() ) )
+    if( o3tl::make_unsigned(nRowIndex) >= m_aRowLabels.size() )
     {
         m_aRowLabels.resize(nRowIndex+1);
         enlargeData( 0, nRowIndex+1 );
diff --git a/chart2/source/tools/ObjectIdentifier.cxx 
b/chart2/source/tools/ObjectIdentifier.cxx
index a4bf8bf43650..a8622e3ff4c4 100644
--- a/chart2/source/tools/ObjectIdentifier.cxx
+++ b/chart2/source/tools/ObjectIdentifier.cxx
@@ -42,6 +42,7 @@
 
 #include <rtl/ustrbuf.hxx>
 #include <tools/diagnose_ex.h>
+#include <o3tl/safeint.hxx>
 #include <o3tl/string_view.hxx>
 
 namespace com::sun::star::drawing { class XShape; }
@@ -222,7 +223,7 @@ void lcl_getDiagramAndCooSys( const OUString& rObjectCID
     if( nCooSysIndex > -1 )
     {
         const std::vector< rtl::Reference< BaseCoordinateSystem > > 
aCooSysList( xDiagram->getBaseCoordinateSystems() );
-        if( nCooSysIndex < static_cast<sal_Int32>(aCooSysList.size()) )
+        if( o3tl::make_unsigned(nCooSysIndex) < aCooSysList.size() )
             xCooSys = aCooSysList[nCooSysIndex];
     }
 }
@@ -1211,7 +1212,7 @@ Reference< beans::XPropertySet > 
ObjectIdentifier::getObjectPropertySet(
                         sal_Int32 nIndex = o3tl::toInt32(aParticleID);
                         const std::vector< rtl::Reference< 
RegressionCurveModel > > & aCurveList =
                             xRegressionContainer->getRegressionCurves2();
-                        if( nIndex >= 0 && nIndex < 
static_cast<sal_Int32>(aCurveList.size()) )
+                        if( nIndex >= 0 && o3tl::make_unsigned(nIndex) < 
aCurveList.size() )
                         {
                             if( eObjectType == OBJECTTYPE_DATA_CURVE_EQUATION )
                                 xObjectProperties = 
aCurveList[nIndex]->getEquationProperties();
@@ -1281,7 +1282,7 @@ rtl::Reference< DataSeries > 
ObjectIdentifier::getDataSeriesForCID(
     if( xDataSeriesContainer.is() )
     {
         const std::vector< rtl::Reference< DataSeries > > & aDataSeriesSeq( 
xDataSeriesContainer->getDataSeries2() );
-        if( nSeriesIndex >= 0 && nSeriesIndex < 
static_cast<sal_Int32>(aDataSeriesSeq.size()) )
+        if( nSeriesIndex >= 0 && o3tl::make_unsigned(nSeriesIndex) < 
aDataSeriesSeq.size() )
             xSeries = aDataSeriesSeq[nSeriesIndex];
     }
 
diff --git a/chart2/source/tools/RegressionCurveHelper.cxx 
b/chart2/source/tools/RegressionCurveHelper.cxx
index 24be670b659c..6124007fceb8 100644
--- a/chart2/source/tools/RegressionCurveHelper.cxx
+++ b/chart2/source/tools/RegressionCurveHelper.cxx
@@ -40,6 +40,7 @@
 #include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
 #include <com/sun/star/chart2/XDataSeries.hpp>
 #include <com/sun/star/chart2/data/XDataSource.hpp>
+#include <o3tl/safeint.hxx>
 #include <tools/diagnose_ex.h>
 #include <comphelper/property.hxx>
 
@@ -668,7 +669,7 @@ rtl::Reference< RegressionCurveModel > 
RegressionCurveHelper::getRegressionCurve
     try
     {
         const std::vector< rtl::Reference< RegressionCurveModel > > 
aCurves(xCurveContainer->getRegressionCurves2());
-        if(0 <= aIndex && aIndex < static_cast<sal_Int32>(aCurves.size()))
+        if(0 <= aIndex && o3tl::make_unsigned(aIndex) < aCurves.size())
         {
             if(!isMeanValueLine(aCurves[aIndex]))
                 return aCurves[aIndex];
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx 
b/chart2/source/view/axes/VCartesianAxis.cxx
index 95a86fe377c2..b14ea4e18878 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -29,6 +29,7 @@
 #include "Tickmarks_Equidistant.hxx"
 #include <ExplicitCategoriesProvider.hxx>
 #include <com/sun/star/chart2/AxisType.hpp>
+#include <o3tl/safeint.hxx>
 #include <rtl/math.hxx>
 #include <tools/diagnose_ex.h>
 #include <tools/color.hxx>
@@ -662,7 +663,7 @@ void VCartesianAxis::createAllTickInfos( 
TickInfoArraysType& rAllTickInfos )
 
 TickIter* VCartesianAxis::createLabelTickIterator( sal_Int32 nTextLevel )
 {
-    if( nTextLevel>=0 && nTextLevel < static_cast< sal_Int32 
>(m_aAllTickInfos.size()) )
+    if( nTextLevel>=0 && o3tl::make_unsigned(nTextLevel) < 
m_aAllTickInfos.size() )
         return new PureTickIter( m_aAllTickInfos[nTextLevel] );
     return nullptr;
 }
diff --git a/chart2/source/view/charttypes/AreaChart.cxx 
b/chart2/source/view/charttypes/AreaChart.cxx
index d7f862ae5cec..9cb2e06ba761 100644
--- a/chart2/source/view/charttypes/AreaChart.cxx
+++ b/chart2/source/view/charttypes/AreaChart.cxx
@@ -38,6 +38,7 @@
 #include <com/sun/star/chart/MissingValueTreatment.hpp>
 
 #include <sal/log.hxx>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 
 #include <com/sun/star/beans/XPropertySet.hpp>
@@ -700,7 +701,7 @@ void AreaChart::createShapes()
                         {
                             
std::vector<std::vector<css::drawing::Position3D>>& rPolygon = 
pSeries->m_aPolyPolygonShape3D;
                             sal_Int32& rIndex = pSeries->m_nPolygonIndex;
-                            if( 0<= rIndex && rIndex < 
static_cast<sal_Int32>(rPolygon.size()) )
+                            if( 0<= rIndex && o3tl::make_unsigned(rIndex) < 
rPolygon.size() )
                             {
                                 if( !rPolygon[ rIndex ].empty() )
                                     rIndex++; //start a new polygon for the 
next point if the current poly is not empty
diff --git a/chart2/source/view/charttypes/NetChart.cxx 
b/chart2/source/view/charttypes/NetChart.cxx
index 647ea083f583..5b8f1db34be5 100644
--- a/chart2/source/view/charttypes/NetChart.cxx
+++ b/chart2/source/view/charttypes/NetChart.cxx
@@ -33,6 +33,7 @@
 #include <com/sun/star/chart/DataLabelPlacement.hpp>
 #include <com/sun/star/chart/MissingValueTreatment.hpp>
 
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 
 #include <officecfg/Office/Compatibility.hxx>
@@ -440,7 +441,7 @@ void NetChart::createShapes()
                         {
                             
std::vector<std::vector<css::drawing::Position3D>>& rPolygon = 
pSeries->m_aPolyPolygonShape3D;
                             sal_Int32& rIndex = pSeries->m_nPolygonIndex;
-                            if( 0<= rIndex && rIndex < 
static_cast<sal_Int32>(rPolygon.size()) )
+                            if( 0<= rIndex && o3tl::make_unsigned(rIndex) < 
rPolygon.size() )
                             {
                                 if( !rPolygon[ rIndex ].empty() )
                                     rIndex++; //start a new polygon for the 
next point if the current poly is not empty
diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx 
b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index eaa7f0743f03..0b2ad886f68f 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -66,6 +66,7 @@
 #include <com/sun/star/chart2/XDataPointCustomLabelField.hpp>
 #include <com/sun/star/container/XChild.hpp>
 #include <com/sun/star/chart2/RelativePosition.hpp>
+#include <o3tl/safeint.hxx>
 #include <tools/color.hxx>
 #include <tools/UnitConversion.hxx>
 #include <rtl/ustrbuf.hxx>
@@ -193,7 +194,7 @@ void VSeriesPlotter::addSeries( 
std::unique_ptr<VDataSeries> pSeries, sal_Int32
             pSeries->setXValuesIfNone( 
m_pExplicitCategoriesProvider->getOriginalCategories() );
     }
 
-    if(zSlot<0 || zSlot>=static_cast<sal_Int32>(m_aZSlots.size()))
+    if(zSlot<0 || o3tl::make_unsigned(zSlot)>=m_aZSlots.size())
     {
         //new z slot
         std::vector< VDataSeriesGroup > aZSlot;
@@ -205,7 +206,7 @@ void VSeriesPlotter::addSeries( 
std::unique_ptr<VDataSeries> pSeries, sal_Int32
         //existing zslot
         std::vector< VDataSeriesGroup >& rXSlots = m_aZSlots[zSlot];
 
-        if(xSlot<0 || xSlot>=static_cast<sal_Int32>(rXSlots.size()))
+        if(xSlot<0 || o3tl::make_unsigned(xSlot)>=rXSlots.size())
         {
             //append the series to already existing x series
             rXSlots.emplace_back( std::move(pSeries) );
diff --git a/connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx 
b/connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx
index d88d9b932f4c..3c755f206224 100644
--- a/connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx
+++ b/connectivity/source/commontools/FDatabaseMetaDataResultSet.cxx
@@ -27,6 +27,7 @@
 #include <comphelper/sequence.hxx>
 #include <cppuhelper/supportsservice.hxx>
 #include <connectivity/dbexception.hxx>
+#include <o3tl/safeint.hxx>
 #include <o3tl/unreachable.hxx>
 #include <TConnection.hxx>
 
@@ -171,7 +172,7 @@ sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::findColumn( 
const OUString& colum
 
 void ODatabaseMetaDataResultSet::checkIndex(sal_Int32 columnIndex )
 {
-    if(columnIndex >= static_cast<sal_Int32>((*m_aRowsIter).size()) || 
columnIndex < 1)
+    if(columnIndex < 1 || o3tl::make_unsigned(columnIndex) >= 
(*m_aRowsIter).size())
         ::dbtools::throwInvalidIndexException(*this);
 }
 
diff --git a/connectivity/source/commontools/paramwrapper.cxx 
b/connectivity/source/commontools/paramwrapper.cxx
index aab6daa243d1..820e2ae9ed62 100644
--- a/connectivity/source/commontools/paramwrapper.cxx
+++ b/connectivity/source/commontools/paramwrapper.cxx
@@ -28,6 +28,7 @@
 #include <com/sun/star/sdb/XSingleSelectQueryAnalyzer.hpp>
 #include <com/sun/star/lang/DisposedException.hpp>
 
+#include <o3tl/safeint.hxx>
 #include <tools/diagnose_ex.h>
 #include <comphelper/enumhelper.hxx>
 
@@ -310,7 +311,7 @@ namespace dbtools::param
         ::osl::MutexGuard aGuard( m_aMutex );
         impl_checkDisposed_throw();
 
-        if ( ( _nIndex < 0 ) || ( _nIndex >= 
static_cast<sal_Int32>(m_aParameters.size()) ) )
+        if ( ( _nIndex < 0 ) || ( o3tl::make_unsigned(_nIndex) >= 
m_aParameters.size() ) )
             throw IndexOutOfBoundsException();
 
         return Any( Reference< XPropertySet >( m_aParameters[ _nIndex ] ) );
diff --git a/connectivity/source/drivers/file/FPreparedStatement.cxx 
b/connectivity/source/drivers/file/FPreparedStatement.cxx
index 2ae516800b06..f2a8571b61e5 100644
--- a/connectivity/source/drivers/file/FPreparedStatement.cxx
+++ b/connectivity/source/drivers/file/FPreparedStatement.cxx
@@ -18,6 +18,7 @@
  */
 
 
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <file/FPreparedStatement.hxx>
 #include <com/sun/star/sdbc/DataType.hpp>
@@ -392,7 +393,7 @@ void SAL_CALL OPreparedStatement::release() noexcept
 void OPreparedStatement::checkAndResizeParameters(sal_Int32 parameterIndex)
 {
     ::connectivity::checkDisposed(OStatement_BASE::rBHelper.bDisposed);
-    if ( m_aAssignValues.is() && (parameterIndex < 1 || parameterIndex >= 
static_cast<sal_Int32>(m_aParameterIndexes.size())) )
+    if ( m_aAssignValues.is() && (parameterIndex < 1 || 
o3tl::make_unsigned(parameterIndex) >= m_aParameterIndexes.size()) )
         throwInvalidIndexException(*this);
     else if ( static_cast<sal_Int32>(m_aParameterRow->size()) <= 
parameterIndex )
     {
diff --git a/connectivity/source/drivers/file/FResultSet.cxx 
b/connectivity/source/drivers/file/FResultSet.cxx
index 43ad38739d5b..4d0e256b931e 100644
--- a/connectivity/source/drivers/file/FResultSet.cxx
+++ b/connectivity/source/drivers/file/FResultSet.cxx
@@ -29,6 +29,7 @@
 #include <cppuhelper/typeprovider.hxx>
 #include <connectivity/dbtools.hxx>
 #include <cppuhelper/propshlp.hxx>
+#include <o3tl/safeint.hxx>
 #include <sal/log.hxx>
 #include <iterator>
 #include <com/sun/star/sdbc/ResultSetType.hpp>
@@ -921,7 +922,7 @@ bool OResultSet::Move(IResultSetHelper::Movement 
eCursorPosition, sal_Int32 nOff
             // The FileCursor is outside of the valid range, if:
             // a.) m_nRowPos < 1
             // b.) a KeySet exists and m_nRowPos > m_pFileSet->size()
-            if (m_nRowPos < 0 || (m_pFileSet->isFrozen() && eCursorPosition != 
IResultSetHelper::BOOKMARK && m_nRowPos >= 
static_cast<sal_Int32>(m_pFileSet->size()) )) // && m_pFileSet->IsFrozen()
+            if (m_nRowPos < 0 || (m_pFileSet->isFrozen() && eCursorPosition != 
IResultSetHelper::BOOKMARK && o3tl::make_unsigned(m_nRowPos) >= 
m_pFileSet->size() )) // && m_pFileSet->IsFrozen()
             {
                 goto Error;
             }
diff --git a/connectivity/source/drivers/file/FResultSetMetaData.cxx 
b/connectivity/source/drivers/file/FResultSetMetaData.cxx
index f68a06532bb7..fdc944043d2a 100644
--- a/connectivity/source/drivers/file/FResultSetMetaData.cxx
+++ b/connectivity/source/drivers/file/FResultSetMetaData.cxx
@@ -22,6 +22,7 @@
 #include <comphelper/extract.hxx>
 #include <connectivity/dbexception.hxx>
 #include <comphelper/types.hxx>
+#include <o3tl/safeint.hxx>
 
 
 using namespace ::comphelper;
@@ -51,7 +52,7 @@ OResultSetMetaData::~OResultSetMetaData()
 
 void OResultSetMetaData::checkColumnIndex(sal_Int32 column)
 {
-    if(column <= 0 || column > static_cast<sal_Int32>(m_xColumns->size()))
+    if(column <= 0 || o3tl::make_unsigned(column) > m_xColumns->size())
         throwInvalidIndexException(*this);
 }
 
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx 
b/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx
index a50b14bbb3b4..6ec6a89f175c 100644
--- a/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx
+++ b/connectivity/source/drivers/mysqlc/mysqlc_preparedstatement.cxx
@@ -23,6 +23,7 @@
 #include "mysqlc_propertyids.hxx"
 #include "mysqlc_resultsetmetadata.hxx"
 
+#include <o3tl/safeint.hxx>
 #include <sal/log.hxx>
 
 #include <com/sun/star/sdbc/DataType.hpp>
@@ -569,7 +570,7 @@ void 
OPreparedStatement::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle, con
 
 void OPreparedStatement::checkParameterIndex(sal_Int32 column)
 {
-    if (column < 1 || column > static_cast<sal_Int32>(m_paramCount))
+    if (column < 1 || o3tl::make_unsigned(column) > m_paramCount)
     {
         throw SQLException("Parameter index out of range", *this, OUString(), 
1, Any());
     }
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx 
b/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx
index 7410ad38e6fc..f1c23ca482ad 100644
--- a/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx
+++ b/connectivity/source/drivers/mysqlc/mysqlc_resultset.cxx
@@ -1095,7 +1095,7 @@ css::uno::Reference<css::beans::XPropertySetInfo> 
SAL_CALL OResultSet::getProper
 
 void OResultSet::checkColumnIndex(sal_Int32 index)
 {
-    if (index < 1 || index > static_cast<int>(m_aFields.size()))
+    if (index < 1 || o3tl::make_unsigned(index) > m_aFields.size())
     {
         /* static object for efficiency or thread safety is a problem ? */
         throw SQLException("index out of range", *this, OUString(), 1, Any());
diff --git a/connectivity/source/drivers/mysqlc/mysqlc_resultsetmetadata.cxx 
b/connectivity/source/drivers/mysqlc/mysqlc_resultsetmetadata.cxx
index 6fc531fa943d..84cd6be2a3a7 100644
--- a/connectivity/source/drivers/mysqlc/mysqlc_resultsetmetadata.cxx
+++ b/connectivity/source/drivers/mysqlc/mysqlc_resultsetmetadata.cxx
@@ -22,6 +22,7 @@
 
 #include <com/sun/star/sdbc/XRow.hpp>
 #include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
+#include <o3tl/safeint.hxx>
 
 using namespace connectivity::mysqlc;
 using namespace com::sun::star::uno;
@@ -199,7 +200,7 @@ sal_Bool SAL_CALL OResultSetMetaData::isWritable(sal_Int32 
column)
 void OResultSetMetaData::checkColumnIndex(sal_Int32 columnIndex)
 {
     auto nColCount = m_fields.size();
-    if (columnIndex < 1 || columnIndex > static_cast<sal_Int32>(nColCount))
+    if (columnIndex < 1 || o3tl::make_unsigned(columnIndex) > nColCount)
     {
         OUString str = "Column index out of range (expected 1 to "
                        + OUString::number(sal_Int32(nColCount)) + ", got "
diff --git a/connectivity/source/drivers/postgresql/pq_preparedstatement.cxx 
b/connectivity/source/drivers/postgresql/pq_preparedstatement.cxx
index d7a73289b077..2f31b4226c08 100644
--- a/connectivity/source/drivers/postgresql/pq_preparedstatement.cxx
+++ b/connectivity/source/drivers/postgresql/pq_preparedstatement.cxx
@@ -40,6 +40,7 @@
 #include "pq_statics.hxx"
 #include "pq_statement.hxx"
 
+#include <o3tl/safeint.hxx>
 #include <rtl/strbuf.hxx>
 #include <rtl/ustrbuf.hxx>
 
@@ -197,7 +198,7 @@ PreparedStatement::~PreparedStatement()
 
 void PreparedStatement::checkColumnIndex( sal_Int32 parameterIndex )
 {
-    if( parameterIndex < 1 || parameterIndex > 
static_cast<sal_Int32>(m_vars.size()) )
+    if( parameterIndex < 1 || o3tl::make_unsigned(parameterIndex) > 
m_vars.size() )
     {
         throw SQLException(
             "pq_preparedstatement: parameter index out of range (expected 1 to 
"
diff --git a/connectivity/source/drivers/postgresql/pq_xcolumns.cxx 
b/connectivity/source/drivers/postgresql/pq_xcolumns.cxx
index 6caf1decc6c6..f1d3c0a53e88 100644
--- a/connectivity/source/drivers/postgresql/pq_xcolumns.cxx
+++ b/connectivity/source/drivers/postgresql/pq_xcolumns.cxx
@@ -38,6 +38,7 @@
 
 #include <string_view>
 
+#include <o3tl/safeint.hxx>
 #include <o3tl/string_view.hxx>
 #include <rtl/ref.hxx>
 #include <rtl/ustrbuf.hxx>
@@ -492,7 +493,7 @@ void Columns::appendByDescriptor(
 void Columns::dropByIndex( sal_Int32 index )
 {
     osl::MutexGuard guard( m_xMutex->GetMutex() );
-    if( index < 0 ||  index >= static_cast<sal_Int32>(m_values.size()) )
+    if( index < 0 ||  o3tl::make_unsigned(index) >= m_values.size() )
     {
         throw css::lang::IndexOutOfBoundsException(
             "COLUMNS: Index out of range (allowed 0 to "
diff --git a/connectivity/source/drivers/postgresql/pq_xcontainer.cxx 
b/connectivity/source/drivers/postgresql/pq_xcontainer.cxx
index 993045d3a44d..fea88b682cdb 100644
--- a/connectivity/source/drivers/postgresql/pq_xcontainer.cxx
+++ b/connectivity/source/drivers/postgresql/pq_xcontainer.cxx
@@ -37,6 +37,7 @@
 #include <com/sun/star/container/ElementExistException.hpp>
 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
 #include <cppuhelper/implbase.hxx>
+#include <o3tl/safeint.hxx>
 
 #include "pq_xcontainer.hxx"
 #include "pq_statics.hxx"
@@ -155,7 +156,7 @@ Any Container::getByName( const OUString& aName )
             "Element " + aName + " unknown in " + m_type + "-Container",
             *this );
     }
-    OSL_ASSERT( ii->second >= 0 && ii->second < 
static_cast<int>(m_values.size()) );
+    OSL_ASSERT( ii->second >= 0 && o3tl::make_unsigned(ii->second) < 
m_values.size() );
     return m_values[ ii->second ];
 }
 
@@ -188,7 +189,7 @@ sal_Bool Container::hasElements(  )
 
 Any Container::getByIndex( sal_Int32 Index )
 {
-    if( Index < 0 || Index >= static_cast<sal_Int32>(m_values.size()) )
+    if( Index < 0 || o3tl::make_unsigned(Index) >= m_values.size() )
     {
         throw IndexOutOfBoundsException(
             "Index " + OUString::number( Index )
@@ -298,7 +299,7 @@ void Container::dropByName( const OUString& elementName )
 void Container::dropByIndex( sal_Int32 index )
 {
     osl::MutexGuard guard( m_xMutex->GetMutex() );
-    if( index < 0 ||  index >=static_cast<sal_Int32>(m_values.size()) )
+    if( index < 0 ||  o3tl::make_unsigned(index) >=m_values.size() )
     {
         throw css::lang::IndexOutOfBoundsException(
             "Index out of range (allowed 0 to "
diff --git a/connectivity/source/drivers/postgresql/pq_xindexes.cxx 
b/connectivity/source/drivers/postgresql/pq_xindexes.cxx
index d027e15b9d3c..ef1e7116a1b0 100644
--- a/connectivity/source/drivers/postgresql/pq_xindexes.cxx
+++ b/connectivity/source/drivers/postgresql/pq_xindexes.cxx
@@ -43,6 +43,7 @@
 #include <com/sun/star/sdbc/XRow.hpp>
 #include <com/sun/star/sdbc/XParameters.hpp>
 #include <cppuhelper/exc_hlp.hxx>
+#include <o3tl/safeint.hxx>
 
 #include "pq_xindexes.hxx"
 #include "pq_xindex.hxx"
@@ -234,7 +235,7 @@ void Indexes::dropByIndex( sal_Int32 index )
 
 
     osl::MutexGuard guard( m_xMutex->GetMutex() );
-    if( index < 0 ||  index >= static_cast<sal_Int32>(m_values.size()) )
+    if( index < 0 ||  o3tl::make_unsigned(index) >= m_values.size() )
     {
         throw css::lang::IndexOutOfBoundsException(
             "Indexes: Index out of range (allowed 0 to "
diff --git a/connectivity/source/drivers/postgresql/pq_xkeys.cxx 
b/connectivity/source/drivers/postgresql/pq_xkeys.cxx
index 0aeb32446abb..dced2bc9baa5 100644
--- a/connectivity/source/drivers/postgresql/pq_xkeys.cxx
+++ b/connectivity/source/drivers/postgresql/pq_xkeys.cxx
@@ -49,6 +49,7 @@
 #include <com/sun/star/sdbc/KeyRule.hpp>
 #include <com/sun/star/sdbcx/KeyType.hpp>
 #include <cppuhelper/exc_hlp.hxx>
+#include <o3tl/safeint.hxx>
 
 #include "pq_xkeys.hxx"
 #include "pq_xkey.hxx"
@@ -226,7 +227,7 @@ void Keys::appendByDescriptor(
 void Keys::dropByIndex( sal_Int32 index )
 {
     osl::MutexGuard guard( m_xMutex->GetMutex() );
-    if( index < 0 ||  index >= static_cast<sal_Int32>(m_values.size()) )
+    if( index < 0 ||  o3tl::make_unsigned(index) >= m_values.size() )
     {
         throw css::lang::IndexOutOfBoundsException(
             "TABLES: Index out of range (allowed 0 to " + 
OUString::number(m_values.size() -1)
diff --git a/connectivity/source/drivers/postgresql/pq_xtables.cxx 
b/connectivity/source/drivers/postgresql/pq_xtables.cxx
index f1a089ff031a..423ec81f2166 100644
--- a/connectivity/source/drivers/postgresql/pq_xtables.cxx
+++ b/connectivity/source/drivers/postgresql/pq_xtables.cxx
@@ -43,6 +43,7 @@
 #include <com/sun/star/sdbcx/Privilege.hpp>
 #include <com/sun/star/sdbc/DataType.hpp>
 #include <cppuhelper/exc_hlp.hxx>
+#include <o3tl/safeint.hxx>
 
 #include "pq_xtables.hxx"
 #include "pq_xviews.hxx"
@@ -310,7 +311,7 @@ void Tables::appendByDescriptor(
 void Tables::dropByIndex( sal_Int32 index )
 {
     osl::MutexGuard guard( m_xMutex->GetMutex() );
-    if( index < 0 ||  index >= static_cast<sal_Int32>(m_values.size()) )
+    if( index < 0 ||  o3tl::make_unsigned(index) >= m_values.size() )
     {
         throw css::lang::IndexOutOfBoundsException(
             "TABLES: Index out of range (allowed 0 to " + 
OUString::number(m_values.size() -1)
diff --git a/connectivity/source/drivers/postgresql/pq_xusers.cxx 
b/connectivity/source/drivers/postgresql/pq_xusers.cxx
index a12c86ed2375..08cdf2d1c135 100644
--- a/connectivity/source/drivers/postgresql/pq_xusers.cxx
+++ b/connectivity/source/drivers/postgresql/pq_xusers.cxx
@@ -41,6 +41,7 @@
 #include <com/sun/star/sdbc/SQLException.hpp>
 #include <com/sun/star/sdbc/XRow.hpp>
 #include <cppuhelper/exc_hlp.hxx>
+#include <o3tl/safeint.hxx>
 
 #include "pq_xusers.hxx"
 #include "pq_xuser.hxx"
@@ -151,7 +152,7 @@ void Users::dropByIndex( sal_Int32 index )
 {
 
     osl::MutexGuard guard( m_xMutex->GetMutex() );
-    if( index < 0 ||  index >= static_cast<sal_Int32>(m_values.size()) )
+    if( index < 0 ||  o3tl::make_unsigned(index) >= m_values.size() )
     {
         throw css::lang::IndexOutOfBoundsException(
             "USERS: Index out of range (allowed 0 to "
diff --git a/connectivity/source/drivers/postgresql/pq_xviews.cxx 
b/connectivity/source/drivers/postgresql/pq_xviews.cxx
index 3dfdfaa5fe64..1f5b6c4fa52c 100644
--- a/connectivity/source/drivers/postgresql/pq_xviews.cxx
+++ b/connectivity/source/drivers/postgresql/pq_xviews.cxx
@@ -41,6 +41,7 @@
 #include <com/sun/star/sdbc/SQLException.hpp>
 #include <com/sun/star/sdbc/XRow.hpp>
 #include <cppuhelper/exc_hlp.hxx>
+#include <o3tl/safeint.hxx>
 
 #include "pq_xviews.hxx"
 #include "pq_xview.hxx"
@@ -175,7 +176,7 @@ void Views::dropByName( const OUString& elementName )
 void Views::dropByIndex( sal_Int32 index )
 {
     osl::MutexGuard guard( m_xMutex->GetMutex() );
-    if( index < 0 ||  index >= static_cast<sal_Int32>(m_values.size()) )
+    if( index < 0 ||  o3tl::make_unsigned(index) >= m_values.size() )
     {
         throw css::lang::IndexOutOfBoundsException(
             "VIEWS: Index out of range (allowed 0 to " + 
OUString::number(m_values.size() -1)
diff --git a/connectivity/source/inc/file/FResultSet.hxx 
b/connectivity/source/inc/file/FResultSet.hxx
index a7aa77ff2576..62a52fe2bc82 100644
--- a/connectivity/source/inc/file/FResultSet.hxx
+++ b/connectivity/source/inc/file/FResultSet.hxx
@@ -40,6 +40,7 @@
 #include <TSortIndex.hxx>
 #include <TSkipDeletedSet.hxx>
 #include <com/sun/star/lang/XEventListener.hpp>
+#include <o3tl/safeint.hxx>
 
 namespace connectivity::file
     {
@@ -292,7 +293,7 @@ namespace connectivity::file
 
             OSL_ENSURE(column > 0, "file::OResultSet::mapColumn: invalid 
column index!");
             // the first column (index 0) is for convenience only. The first 
real select column is number 1.
-            if ((column > 0) && (column < 
static_cast<sal_Int32>(m_aColMapping.size())))
+            if ((column > 0) && (o3tl::make_unsigned(column) < 
m_aColMapping.size()))
                 map = m_aColMapping[column];
 
             return map;
diff --git a/connectivity/source/parse/sqliterator.cxx 
b/connectivity/source/parse/sqliterator.cxx
index 83d6342fa84b..fcebd2879a4f 100644
--- a/connectivity/source/parse/sqliterator.cxx
+++ b/connectivity/source/parse/sqliterator.cxx
@@ -37,6 +37,7 @@
 #include <comphelper/types.hxx>
 #include <connectivity/dbmetadata.hxx>
 #include <com/sun/star/sdb/SQLFilterOperator.hpp>
+#include <o3tl/safeint.hxx>
 #include <sal/log.hxx>
 
 #include <iterator>
@@ -1758,7 +1759,7 @@ void OSQLParseTreeIterator::setOrderByColumnName(const 
OUString & rColumnName, O
     else
     {
         sal_Int32 nId = rColumnName.toInt32();
-        if ( nId > 0 && nId < static_cast<sal_Int32>(m_aSelectColumns->size()) 
)
+        if ( nId > 0 && o3tl::make_unsigned(nId) < m_aSelectColumns->size() )
             m_aOrderColumns->push_back( new OOrderColumn( 
(*m_aSelectColumns)[nId-1], isCaseSensitive(), bAscending ) );
     }
 
@@ -1779,7 +1780,7 @@ void OSQLParseTreeIterator::setGroupByColumnName(const 
OUString & rColumnName, O
     else
     {
         sal_Int32 nId = rColumnName.toInt32();
-        if ( nId > 0 && nId < static_cast<sal_Int32>(m_aSelectColumns->size()) 
)
+        if ( nId > 0 && o3tl::make_unsigned(nId) < m_aSelectColumns->size() )
             m_aGroupColumns->push_back(new 
OParseColumn((*m_aSelectColumns)[nId-1],isCaseSensitive()));
     }
 
diff --git a/dbaccess/source/core/api/RowSet.cxx 
b/dbaccess/source/core/api/RowSet.cxx
index 0f0a21bfb98f..28c3929953c2 100644
--- a/dbaccess/source/core/api/RowSet.cxx
+++ b/dbaccess/source/core/api/RowSet.cxx
@@ -2701,7 +2701,7 @@ void ORowSet::checkUpdateConditions(sal_Int32 columnIndex)
     if ( m_aCurrentRow.isNull() )
         ::dbtools::throwSQLException( DBA_RES( RID_STR_INVALID_CURSOR_STATE ), 
StandardSQLState::INVALID_CURSOR_STATE, *this );
 
-    if ( columnIndex <= 0 || sal_Int32((*m_aCurrentRow)->size()) <= 
columnIndex )
+    if ( columnIndex <= 0 || (*m_aCurrentRow)->size() <= 
o3tl::make_unsigned(columnIndex) )
         ::dbtools::throwSQLException( DBA_RES( RID_STR_INVALID_INDEX ), 
StandardSQLState::INVALID_DESCRIPTOR_INDEX, *this );
 }
 
diff --git a/dbaccess/source/core/api/RowSetCache.cxx 
b/dbaccess/source/core/api/RowSetCache.cxx
index e3059f889b6b..46b2cea95a02 100644
--- a/dbaccess/source/core/api/RowSetCache.cxx
+++ b/dbaccess/source/core/api/RowSetCache.cxx
@@ -946,7 +946,7 @@ void ORowSetCache::moveWindow()
             if ( nRowsInCache < m_nFetchSize )
             {
                 // There is some unused space in *m_pMatrix; fill it
-                OSL_ENSURE((nRowsInCache >= 
static_cast<ORowSetMatrix::difference_type>(0)) && (nRowsInCache < 
static_cast<sal_Int32>(m_pMatrix->size())),"Position is invalid!");
+                OSL_ENSURE((nRowsInCache >= 
static_cast<ORowSetMatrix::difference_type>(0)) && 
(o3tl::make_unsigned(nRowsInCache) < m_pMatrix->size()),"Position is invalid!");
                 sal_Int32 nPos = m_nEndPos + 1;
                 bool bCheck = m_xCacheSet->absolute(nPos);
                 ORowSetMatrix::iterator aIter = m_pMatrix->begin() + 
nRowsInCache;
@@ -964,7 +964,7 @@ void ORowSetCache::moveWindow()
             // The rows behind this can be reused
             ORowSetMatrix::iterator aIter = m_pMatrix->begin();
             const sal_Int32 nNewStartPosInMatrix = nNewStartPos - m_nStartPos;
-            OSL_ENSURE((nNewStartPosInMatrix >= 
static_cast<ORowSetMatrix::difference_type>(0)) && (nNewStartPosInMatrix < 
static_cast<sal_Int32>(m_pMatrix->size())),"Position is invalid!");
+            OSL_ENSURE((nNewStartPosInMatrix >= 
static_cast<ORowSetMatrix::difference_type>(0)) && 
(o3tl::make_unsigned(nNewStartPosInMatrix) < m_pMatrix->size()),"Position is 
invalid!");
             // first position we reuse
             const ORowSetMatrix::const_iterator aEnd  = m_pMatrix->begin() + 
nNewStartPosInMatrix;
             // End of used portion of the matrix. Is < m_pMatrix->end() if 
less data than window size
@@ -1623,8 +1623,8 @@ void ORowSetCache::clearInsertRow()
 ORowSetMatrix::iterator ORowSetCache::calcPosition() const
 {
     sal_Int32 nValue = (m_nPosition - m_nStartPos) - 1;
-    OSL_ENSURE((nValue >= static_cast<ORowSetMatrix::difference_type>(0)) && 
(nValue < static_cast<sal_Int32>(m_pMatrix->size())),"Position is invalid!");
-    return ( nValue < 0 || nValue >= static_cast<sal_Int32>(m_pMatrix->size()) 
) ? m_pMatrix->end() : (m_pMatrix->begin() + nValue);
+    OSL_ENSURE((nValue >= static_cast<ORowSetMatrix::difference_type>(0)) && 
(o3tl::make_unsigned(nValue) < m_pMatrix->size()),"Position is invalid!");
+    return ( nValue < 0 || o3tl::make_unsigned(nValue) >= m_pMatrix->size() ) 
? m_pMatrix->end() : (m_pMatrix->begin() + nValue);
 }
 
 TORowSetOldRowHelperRef ORowSetCache::registerOldRow()
diff --git a/dbaccess/source/core/api/StaticSet.cxx 
b/dbaccess/source/core/api/StaticSet.cxx
index a7ea00c4376b..97226b466dbd 100644
--- a/dbaccess/source/core/api/StaticSet.cxx
+++ b/dbaccess/source/core/api/StaticSet.cxx
@@ -23,6 +23,7 @@
 #include <com/sun/star/beans/XPropertySet.hpp>
 #include <connectivity/CommonTools.hxx>
 #include <comphelper/types.hxx>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 
 using namespace dbaccess;
@@ -193,7 +194,7 @@ bool OStaticSet::absolute( sal_Int32 row )
     }
     else if(row > 0)
     {
-        if(row >= static_cast<sal_Int32>(m_aSet.size()))
+        if(o3tl::make_unsigned(row) >= m_aSet.size())
         {
             if(!m_bEnd)
             {
@@ -202,7 +203,7 @@ bool OStaticSet::absolute( sal_Int32 row )
                     bNext = fetchRow();
             }
 
-            if(row > static_cast<sal_Int32>(m_aSet.size()))
+            if(o3tl::make_unsigned(row) > m_aSet.size())
                 m_aSetIter = m_aSet.end();  // check again
             else
                 m_aSetIter = m_aSet.begin() + row;
diff --git a/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx 
b/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx
index 4072002ba326..a03caea57e93 100644
--- a/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx
+++ b/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx
@@ -19,6 +19,7 @@
 
 #include <bookmarkcontainer.hxx>
 
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <comphelper/enumhelper.hxx>
 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
@@ -206,7 +207,7 @@ Any SAL_CALL OBookmarkContainer::getByIndex( sal_Int32 
_nIndex )
 {
     MutexGuard aGuard(m_rMutex);
 
-    if ((_nIndex < 0) || (_nIndex >= 
static_cast<sal_Int32>(m_aBookmarksIndexed.size())))
+    if ((_nIndex < 0) || (o3tl::make_unsigned(_nIndex) >= 
m_aBookmarksIndexed.size()))
         throw IndexOutOfBoundsException();
 
     return Any(m_aBookmarksIndexed[_nIndex]->second);
diff --git a/dbaccess/source/core/dataaccess/definitioncontainer.cxx 
b/dbaccess/source/core/dataaccess/definitioncontainer.cxx
index d3023f2885ab..81d8b03026bb 100644
--- a/dbaccess/source/core/dataaccess/definitioncontainer.cxx
+++ b/dbaccess/source/core/dataaccess/definitioncontainer.cxx
@@ -23,6 +23,7 @@
 #include <strings.hxx>
 
 #include <tools/diagnose_ex.h>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <comphelper/enumhelper.hxx>
 #include <cppuhelper/exc_hlp.hxx>
@@ -372,7 +373,7 @@ Any SAL_CALL ODefinitionContainer::getByIndex( sal_Int32 
_nIndex )
 {
     MutexGuard aGuard(m_aMutex);
 
-    if ((_nIndex < 0) || (_nIndex >= 
static_cast<sal_Int32>(m_aDocuments.size())))
+    if ((_nIndex < 0) || (o3tl::make_unsigned(_nIndex) >= m_aDocuments.size()))
         throw IndexOutOfBoundsException();
 
     Documents::iterator aPos = m_aDocuments[_nIndex];
diff --git a/dbaccess/source/ui/control/ColumnControlWindow.cxx 
b/dbaccess/source/ui/control/ColumnControlWindow.cxx
index 7a419a6cfb8c..f9f786f22ec3 100644
--- a/dbaccess/source/ui/control/ColumnControlWindow.cxx
+++ b/dbaccess/source/ui/control/ColumnControlWindow.cxx
@@ -21,6 +21,7 @@
 #include <unotools/syslocale.hxx>
 #include <i18nlangtag/languagetag.hxx>
 #include <connectivity/dbtools.hxx>
+#include <o3tl/safeint.hxx>
 #include <UITools.hxx>
 #include <core_resource.hxx>
 #include <strings.hrc>
@@ -121,7 +122,7 @@ Reference< XNumberFormatter > 
OColumnControlWindow::GetFormatter() const
 
 TOTypeInfoSP OColumnControlWindow::getTypeInfo(sal_Int32 _nPos)
 {
-    return ( _nPos >= 0 && _nPos < 
static_cast<sal_Int32>(m_aDestTypeInfoIndex.size())) ? 
m_aDestTypeInfoIndex[_nPos]->second : TOTypeInfoSP();
+    return ( _nPos >= 0 && o3tl::make_unsigned(_nPos) < 
m_aDestTypeInfoIndex.size()) ? m_aDestTypeInfoIndex[_nPos]->second : 
TOTypeInfoSP();
 }
 
 const OTypeInfoMap* OColumnControlWindow::getTypeInfo() const
diff --git a/dbaccess/source/ui/dlg/indexfieldscontrol.cxx 
b/dbaccess/source/ui/dlg/indexfieldscontrol.cxx
index 3770fb737e1a..35b0e3f02a27 100644
--- a/dbaccess/source/ui/dlg/indexfieldscontrol.cxx
+++ b/dbaccess/source/ui/dlg/indexfieldscontrol.cxx
@@ -20,6 +20,7 @@
 #include <core_resource.hxx>
 #include <indexfieldscontrol.hxx>
 #include <strings.hrc>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <helpids.h>
 #include <toolkit/helper/vclunohelper.hxx>
@@ -266,7 +267,7 @@ constexpr auto BROWSER_STANDARD_FLAGS = 
BrowserMode::COLUMNSELECTION | BrowserMo
     bool IndexFieldsControl::implGetFieldDesc(sal_Int32 _nRow, 
IndexFields::const_iterator& _rPos)
     {
         _rPos = m_aFields.end();
-        if ((_nRow < 0) || (_nRow >= static_cast<sal_Int32>(m_aFields.size())))
+        if ((_nRow < 0) || (o3tl::make_unsigned(_nRow) >= m_aFields.size()))
             return false;
         _rPos = m_aFields.begin() + _nRow;
         return true;
diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx 
b/dbaccess/source/ui/tabledesign/TEditControl.cxx
index cd2149efbf54..5f7809882cc6 100644
--- a/dbaccess/source/ui/tabledesign/TEditControl.cxx
+++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx
@@ -36,6 +36,7 @@
 #include <connectivity/dbtools.hxx>
 #include <SqlNameEdit.hxx>
 #include <TableRowExchange.hxx>
+#include <o3tl/safeint.hxx>
 #include <sot/storage.hxx>
 #include <svx/svxids.hrc>
 #include <UITools.hxx>
@@ -1602,7 +1603,7 @@ void OTableEditorCtrl::SwitchType( const TOTypeInfoSP& 
_pType )
         // Store the old description
         pDescrWin->SaveData( pActFieldDescr );
 
-    if ( nRow < 0 || nRow > static_cast<tools::Long>(m_pRowList->size()) )
+    if ( nRow < 0 || o3tl::make_unsigned(nRow) > m_pRowList->size() )
         return;
     // Show the new description
     std::shared_ptr<OTableRow>  pRow = (*m_pRowList)[nRow];
diff --git a/dbaccess/source/ui/uno/copytablewizard.cxx 
b/dbaccess/source/ui/uno/copytablewizard.cxx
index 14b4609476db..2645952f4b5e 100644
--- a/dbaccess/source/ui/uno/copytablewizard.cxx
+++ b/dbaccess/source/ui/uno/copytablewizard.cxx
@@ -60,6 +60,7 @@
 #include <cppuhelper/exc_hlp.hxx>
 #include <cppuhelper/implbase.hxx>
 #include <comphelper/interfacecontainer3.hxx>
+#include <o3tl/safeint.hxx>
 #include <rtl/ustrbuf.hxx>
 #include <sal/log.hxx>
 #include <svtools/genericunodialog.hxx>
@@ -1150,7 +1151,7 @@ void CopyTableWizard::impl_copyRows_throw( const 
Reference< XResultSet >& _rxSou
                     continue;
                 }
 
-                if ( ( nSourceColumn < 1 ) || ( nSourceColumn >= 
static_cast<sal_Int32>(aSourceColTypes.size()) ) )
+                if ( ( nSourceColumn < 1 ) || ( 
o3tl::make_unsigned(nSourceColumn) >= aSourceColTypes.size() ) )
                 {   // ( we have to check here against 1 because the 
parameters are 1 based)
                     ::dbtools::throwSQLException("Internal error: invalid 
column type index.",
                                                  
::dbtools::StandardSQLState::INVALID_DESCRIPTOR_INDEX, *this);
diff --git a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx 
b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
index 3b96147bbf02..a60fffd50bc2 100644
--- a/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
+++ b/desktop/source/deployment/gui/dp_gui_extlistbox.cxx
@@ -35,6 +35,7 @@
 #include <com/sun/star/system/SystemShellExecute.hpp>
 #include <cppuhelper/weakref.hxx>
 #include <i18nlangtag/languagetag.hxx>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <rtl/ustrbuf.hxx>
 #include <vcl/event.hxx>
@@ -354,7 +355,7 @@ void ExtensionBox_Impl::selectEntry( const tools::Long nPos 
)
             m_vEntries[ m_nActive ]->m_bActive = false;
         }
 
-        if ( ( nPos >= 0 ) && ( nPos < 
static_cast<tools::Long>(m_vEntries.size()) ) )
+        if ( ( nPos >= 0 ) && ( o3tl::make_unsigned(nPos) < m_vEntries.size() 
) )
         {
             m_bHasActive = true;
             m_nActive = nPos;
@@ -623,7 +624,7 @@ bool ExtensionBox_Impl::HandleCursorKey( sal_uInt16 
nKeyCode )
 
     if ( nSelect < 0 )
         nSelect = 0;
-    if ( nSelect >= static_cast<tools::Long>(m_vEntries.size()) )
+    if ( o3tl::make_unsigned(nSelect) >= m_vEntries.size() )
         nSelect = m_vEntries.size() - 1;
 
     selectEntry( nSelect );
@@ -732,7 +733,7 @@ bool ExtensionBox_Impl::MouseMove( const MouseEvent& rMEvt )
     bool bOverHyperlink = false;
 
     auto nPos = PointToPos( rMEvt.GetPosPixel() );
-    if ( ( nPos >= 0 ) && ( nPos < static_cast<tools::Long>(m_vEntries.size()) 
) )
+    if ( ( nPos >= 0 ) && ( o3tl::make_unsigned(nPos) < m_vEntries.size() ) )
     {
         const auto& rEntry = m_vEntries[nPos];
         bOverHyperlink = !rEntry->m_sPublisher.isEmpty() && 
rEntry->m_aLinkRect.Contains(rMEvt.GetPosPixel());
@@ -749,7 +750,7 @@ bool ExtensionBox_Impl::MouseMove( const MouseEvent& rMEvt )
 OUString ExtensionBox_Impl::RequestHelp(tools::Rectangle& rRect)
 {
     auto nPos = PointToPos( rRect.TopLeft() );
-    if ( ( nPos >= 0 ) && ( nPos < static_cast<tools::Long>(m_vEntries.size()) 
) )
+    if ( ( nPos >= 0 ) && ( o3tl::make_unsigned(nPos) < m_vEntries.size() ) )
     {
         const auto& rEntry = m_vEntries[nPos];
         bool bOverHyperlink = !rEntry->m_sPublisher.isEmpty() && 
rEntry->m_aLinkRect.Contains(rRect);
@@ -774,7 +775,7 @@ bool ExtensionBox_Impl::MouseButtonDown( const MouseEvent& 
rMEvt )
     {
         auto nPos = PointToPos( rMEvt.GetPosPixel() );
 
-        if ( ( nPos >= 0 ) && ( nPos < 
static_cast<tools::Long>(m_vEntries.size()) ) )
+        if ( ( nPos >= 0 ) && ( o3tl::make_unsigned(nPos) < m_vEntries.size() 
) )
         {
             const auto& rEntry = m_vEntries[nPos];
             if (!rEntry->m_sPublisher.isEmpty() && 
rEntry->m_aLinkRect.Contains(rMEvt.GetPosPixel()))
diff --git a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx 
b/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
index fb74a233e283..aa319161bd3d 100644
--- a/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
+++ b/drawinglayer/source/processor3d/zbufferprocessor3d.cxx
@@ -27,6 +27,7 @@
 #include <basegfx/polygon/b3dpolygontools.hxx>
 #include <basegfx/polygon/b3dpolypolygontools.hxx>
 #include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
+#include <o3tl/safeint.hxx>
 #include <svtools/optionsdrawinglayer.hxx>
 
 using namespace com::sun::star;
@@ -269,7 +270,7 @@ void ZBufferRasterConverter3D::processLineSpan(const 
basegfx::RasterConversionLi
     if(nSpanCount & 0x0001)
         return;
 
-    if(nLine < 0 || nLine >= static_cast<sal_Int32>(mrBuffer.getHeight()))
+    if(nLine < 0 || o3tl::make_unsigned(nLine) >= mrBuffer.getHeight())
         return;
 
     sal_uInt32 nXA(std::min(mrBuffer.getWidth(), 
static_cast<sal_uInt32>(std::max(sal_Int32(0), 
basegfx::fround(rA.getX().getVal())))));
diff --git a/editeng/source/editeng/editdoc.cxx 
b/editeng/source/editeng/editdoc.cxx
index fba3408f1cc6..b0df5683b03a 100644
--- a/editeng/source/editeng/editdoc.cxx
+++ b/editeng/source/editeng/editdoc.cxx
@@ -50,6 +50,7 @@
 
 #include <rtl/ustrbuf.hxx>
 #include <sal/log.hxx>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 
 #include <svl/grabbagitem.hxx>
@@ -690,17 +691,17 @@ sal_Int32 ParaPortionList::GetPos(const ParaPortion* p) 
const
 
 ParaPortion* ParaPortionList::operator [](sal_Int32 nPos)
 {
-    return 0 <= nPos && nPos < static_cast<sal_Int32>(maPortions.size()) ? 
maPortions[nPos].get() : nullptr;
+    return 0 <= nPos && o3tl::make_unsigned(nPos) < maPortions.size() ? 
maPortions[nPos].get() : nullptr;
 }
 
 const ParaPortion* ParaPortionList::operator [](sal_Int32 nPos) const
 {
-    return 0 <= nPos && nPos < static_cast<sal_Int32>(maPortions.size()) ? 
maPortions[nPos].get() : nullptr;
+    return 0 <= nPos && o3tl::make_unsigned(nPos) < maPortions.size() ? 
maPortions[nPos].get() : nullptr;
 }
 
 std::unique_ptr<ParaPortion> ParaPortionList::Release(sal_Int32 nPos)
 {
-    if (nPos < 0 || static_cast<sal_Int32>(maPortions.size()) <= nPos)
+    if (nPos < 0 || maPortions.size() <= o3tl::make_unsigned(nPos))
     {
         SAL_WARN( "editeng", "ParaPortionList::Release - out of bounds pos " 
<< nPos);
         return nullptr;
@@ -712,7 +713,7 @@ std::unique_ptr<ParaPortion> 
ParaPortionList::Release(sal_Int32 nPos)
 
 void ParaPortionList::Remove(sal_Int32 nPos)
 {
-    if (nPos < 0 || static_cast<sal_Int32>(maPortions.size()) <= nPos)
+    if (nPos < 0 || maPortions.size() <= o3tl::make_unsigned(nPos))
     {
         SAL_WARN( "editeng", "ParaPortionList::Remove - out of bounds pos " << 
nPos);
         return;
@@ -722,7 +723,7 @@ void ParaPortionList::Remove(sal_Int32 nPos)
 
 void ParaPortionList::Insert(sal_Int32 nPos, std::unique_ptr<ParaPortion> p)
 {
-    if (nPos < 0 || static_cast<sal_Int32>(maPortions.size()) < nPos)
+    if (nPos < 0 || maPortions.size() < o3tl::make_unsigned(nPos))
     {
         SAL_WARN( "editeng", "ParaPortionList::Insert - out of bounds pos " << 
nPos);
         return;
@@ -779,12 +780,12 @@ sal_Int32 ParaPortionList::FindParagraph(tools::Long 
nYOffset) const
 
 const ParaPortion* ParaPortionList::SafeGetObject(sal_Int32 nPos) const
 {
-    return 0 <= nPos && nPos < static_cast<sal_Int32>(maPortions.size()) ? 
maPortions[nPos].get() : nullptr;
+    return 0 <= nPos && o3tl::make_unsigned(nPos) < maPortions.size() ? 
maPortions[nPos].get() : nullptr;
 }
 
 ParaPortion* ParaPortionList::SafeGetObject(sal_Int32 nPos)
 {
-    return 0 <= nPos && nPos < static_cast<sal_Int32>(maPortions.size()) ? 
maPortions[nPos].get() : nullptr;
+    return 0 <= nPos && o3tl::make_unsigned(nPos) < maPortions.size() ? 
maPortions[nPos].get() : nullptr;
 }
 
 #if OSL_DEBUG_LEVEL > 0 && !defined NDEBUG
@@ -2073,12 +2074,12 @@ sal_Int32 EditDoc::GetPos(const ContentNode* p) const
 
 const ContentNode* EditDoc::GetObject(sal_Int32 nPos) const
 {
-    return 0 <= nPos && nPos < static_cast<sal_Int32>(maContents.size()) ? 
maContents[nPos].get() : nullptr;
+    return 0 <= nPos && o3tl::make_unsigned(nPos) < maContents.size() ? 
maContents[nPos].get() : nullptr;
 }
 
 ContentNode* EditDoc::GetObject(sal_Int32 nPos)
 {
-    return 0 <= nPos && nPos < static_cast<sal_Int32>(maContents.size()) ? 
maContents[nPos].get() : nullptr;
+    return 0 <= nPos && o3tl::make_unsigned(nPos) < maContents.size() ? 
maContents[nPos].get() : nullptr;
 }
 
 const ContentNode* EditDoc::operator[](sal_Int32 nPos) const
@@ -2103,7 +2104,7 @@ void EditDoc::Insert(sal_Int32 nPos, ContentNode* p)
 
 void EditDoc::Remove(sal_Int32 nPos)
 {
-    if (nPos < 0 || nPos >= static_cast<sal_Int32>(maContents.size()))
+    if (nPos < 0 || o3tl::make_unsigned(nPos) >= maContents.size())
     {
         SAL_WARN( "editeng", "EditDoc::Remove - out of bounds pos " << nPos);
         return;
@@ -2113,7 +2114,7 @@ void EditDoc::Remove(sal_Int32 nPos)
 
 void EditDoc::Release(sal_Int32 nPos)
 {
-    if (nPos < 0 || nPos >= static_cast<sal_Int32>(maContents.size()))
+    if (nPos < 0 || o3tl::make_unsigned(nPos) >= maContents.size())
     {
         SAL_WARN( "editeng", "EditDoc::Release - out of bounds pos " << nPos);
         return;
diff --git a/editeng/source/editeng/editeng.cxx 
b/editeng/source/editeng/editeng.cxx
index 5869bcdeeeb4..1b8b446c3a15 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -23,6 +23,7 @@
 #include <comphelper/lok.hxx>
 #include <comphelper/processfactory.hxx>
 #include <config_global.h>
+#include <o3tl/safeint.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/weld.hxx>
 #include <vcl/window.hxx>
@@ -2040,7 +2041,7 @@ bool EditEngine::IsTextPos( const Point& rPaperPos, 
sal_uInt16 nBorder )
     // take unrotated positions for calculation here
     Point aDocPos = GetDocPos( rPaperPos );
 
-    if ( ( aDocPos.Y() > 0  ) && ( aDocPos.Y() < 
static_cast<tools::Long>(pImpEditEngine->GetTextHeight()) ) )
+    if ( ( aDocPos.Y() > 0  ) && ( o3tl::make_unsigned(aDocPos.Y()) < 
pImpEditEngine->GetTextHeight() ) )
         return pImpEditEngine->IsTextPos(aDocPos, nBorder);
     return false;
 }
diff --git a/editeng/source/editeng/impedit2.cxx 
b/editeng/source/editeng/impedit2.cxx
index 78a6c8d0e492..f04623a03292 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -4243,7 +4243,7 @@ tools::Long ImpEditEngine::GetXPos(
             if( !pLine->GetCharPosArray().empty() )
             {
                 sal_Int32 nPos = nIndex - 1 - pLine->GetStart();
-                if (nPos < 0 || nPos >= 
static_cast<sal_Int32>(pLine->GetCharPosArray().size()))
+                if (nPos < 0 || o3tl::make_unsigned(nPos) >= 
pLine->GetCharPosArray().size())
                 {
                     nPos = pLine->GetCharPosArray().size()-1;
                     OSL_FAIL("svx::ImpEditEngine::GetXPos(), index out of 
range!");
diff --git a/extensions/source/propctrlr/formmetadata.cxx 
b/extensions/source/propctrlr/formmetadata.cxx
index 54a9d7cf2e0f..13a7b32e706b 100644
--- a/extensions/source/propctrlr/formmetadata.cxx
+++ b/extensions/source/propctrlr/formmetadata.cxx
@@ -25,6 +25,7 @@
 #include <strings.hrc>
 #include <stringarrays.hrc>
 #include <comphelper/extract.hxx>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <sal/macros.h>
 #include <algorithm>
@@ -675,7 +676,7 @@ namespace pcr
             --nIntValue;
 
         std::vector< OUString > aEnumStrings = 
m_rMetaData.getPropertyEnumRepresentations( m_nPropertyId );
-        if ( ( nIntValue >= 0 ) && ( nIntValue < 
static_cast<sal_Int32>(aEnumStrings.size()) ) )
+        if ( ( nIntValue >= 0 ) && ( o3tl::make_unsigned(nIntValue) < 
aEnumStrings.size() ) )
         {
             sReturn = aEnumStrings[ nIntValue ];
         }
diff --git a/extensions/source/propctrlr/genericpropertyhandler.cxx 
b/extensions/source/propctrlr/genericpropertyhandler.cxx
index 6d26811cee1d..8320e5154d14 100644
--- a/extensions/source/propctrlr/genericpropertyhandler.cxx
+++ b/extensions/source/propctrlr/genericpropertyhandler.cxx
@@ -39,6 +39,7 @@
 #include <comphelper/propertyvalue.hxx>
 #include <comphelper/sequence.hxx>
 #include <comphelper/types.hxx>
+#include <o3tl/safeint.hxx>
 #include <tools/debug.hxx>
 #include <tools/diagnose_ex.h>
 
@@ -166,7 +167,7 @@ namespace pcr
         sal_Int32 index = std::find( std::cbegin(aValues), std::cend(aValues), 
nAsInt ) - std::cbegin(aValues);
 
         std::vector< OUString > aDescriptions( getDescriptions() );
-        if ( ( index >= 0 ) && ( index < 
static_cast<sal_Int32>(aDescriptions.size()) ) )
+        if ( ( index >= 0 ) && ( o3tl::make_unsigned(index) < 
aDescriptions.size() ) )
             sDescription = aDescriptions[ index ];
         else
         {
diff --git a/forms/source/component/ListBox.cxx 
b/forms/source/component/ListBox.cxx
index d9542504a72b..a6d4bd808086 100644
--- a/forms/source/component/ListBox.cxx
+++ b/forms/source/component/ListBox.cxx
@@ -1396,7 +1396,7 @@ namespace frm
         {
             sal_Int32 nSelectIndex = -1;
             OSL_VERIFY( _rExternalValue >>= nSelectIndex );
-            if ( ( nSelectIndex >= 0 ) && ( nSelectIndex < 
static_cast<sal_Int32>(getStringItemList().size()) ) )
+            if ( ( nSelectIndex >= 0 ) && ( o3tl::make_unsigned(nSelectIndex) 
< getStringItemList().size() ) )
             {
                 aSelectIndexes = { o3tl::narrowing<sal_Int16>(nSelectIndex) };
             }
diff --git a/forms/source/component/entrylisthelper.cxx 
b/forms/source/component/entrylisthelper.cxx
index 84addb3afb51..0f781076328c 100644
--- a/forms/source/component/entrylisthelper.cxx
+++ b/forms/source/component/entrylisthelper.cxx
@@ -20,6 +20,7 @@
 #include "entrylisthelper.hxx"
 #include <FormComponent.hxx>
 
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <comphelper/sequence.hxx>
 #include <comphelper/property.hxx>
@@ -82,13 +83,13 @@ namespace frm
 
         OSL_ENSURE( _rEvent.Source == m_xListSource,
             "OEntryListHelper::entryChanged: where did this come from?" );
-        OSL_ENSURE( ( _rEvent.Position >= 0 ) && ( _rEvent.Position < 
static_cast<sal_Int32>(m_aStringItems.size()) ),
+        OSL_ENSURE( ( _rEvent.Position >= 0 ) && ( 
o3tl::make_unsigned(_rEvent.Position) < m_aStringItems.size() ),
             "OEntryListHelper::entryChanged: invalid index!" );
         OSL_ENSURE( _rEvent.Entries.getLength() == 1,
             "OEntryListHelper::entryChanged: invalid string list!" );
 
         if  (   ( _rEvent.Position >= 0 )
-            &&  ( _rEvent.Position < 
static_cast<sal_Int32>(m_aStringItems.size()) )
+            &&  ( o3tl::make_unsigned(_rEvent.Position) < 
m_aStringItems.size() )
             &&  _rEvent.Entries.hasElements()
             )
         {
@@ -106,11 +107,11 @@ namespace frm
 
         OSL_ENSURE( _rEvent.Source == m_xListSource,
             "OEntryListHelper::entryRangeInserted: where did this come from?" 
);
-        OSL_ENSURE( ( _rEvent.Position > 0 ) && ( _rEvent.Position < 
static_cast<sal_Int32>(m_aStringItems.size()) ) && 
_rEvent.Entries.hasElements(),
+        OSL_ENSURE( ( _rEvent.Position > 0 ) && ( 
o3tl::make_unsigned(_rEvent.Position) < m_aStringItems.size() ) && 
_rEvent.Entries.hasElements(),
             "OEntryListHelper::entryRangeRemoved: invalid count and/or 
position!" );
 
         if  (   ( _rEvent.Position > 0 )
-            &&  ( _rEvent.Position < 
static_cast<sal_Int32>(m_aStringItems.size()) )
+            &&  ( o3tl::make_unsigned(_rEvent.Position) < 
m_aStringItems.size() )
             &&  _rEvent.Entries.hasElements()
             )
         {
diff --git a/forms/source/misc/InterfaceContainer.cxx 
b/forms/source/misc/InterfaceContainer.cxx
index f0615970aa44..c797124bfeaf 100644
--- a/forms/source/misc/InterfaceContainer.cxx
+++ b/forms/source/misc/InterfaceContainer.cxx
@@ -43,6 +43,7 @@
 #include <comphelper/sequence.hxx>
 #include <comphelper/types.hxx>
 #include <cppuhelper/exc_hlp.hxx>
+#include <o3tl/safeint.hxx>
 #include <tools/debug.hxx>
 #include <tools/diagnose_ex.h>
 #include <sal/log.hxx>
@@ -722,7 +723,7 @@ sal_Int32 OInterfaceContainer::getCount()
 
 Any OInterfaceContainer::getByIndex(sal_Int32 _nIndex)
 {
-    if (_nIndex < 0 || (_nIndex >= static_cast<sal_Int32>(m_aItems.size())))
+    if (_nIndex < 0 || (o3tl::make_unsigned(_nIndex) >= m_aItems.size()))
         throw IndexOutOfBoundsException();
 
     return m_aItems[_nIndex]->queryInterface( m_aElementType );
@@ -915,7 +916,7 @@ void SAL_CALL OInterfaceContainer::insertByIndex( sal_Int32 
_nIndex, const Any&
 
 void OInterfaceContainer::implReplaceByIndex( const sal_Int32 _nIndex, const 
Any& _rNewElement, ::osl::ClearableMutexGuard& _rClearBeforeNotify )
 {
-    OSL_PRECOND( ( _nIndex >= 0 ) && ( _nIndex < 
static_cast<sal_Int32>(m_aItems.size()) ), 
"OInterfaceContainer::implReplaceByIndex: precondition not met (index)!" );
+    OSL_PRECOND( ( _nIndex >= 0 ) && ( o3tl::make_unsigned(_nIndex) < 
m_aItems.size() ), "OInterfaceContainer::implReplaceByIndex: precondition not 
met (index)!" );
 
     // approve the new object
     std::unique_ptr< ElementDescription > aElementMetaData( 
createElementMetaData() );
@@ -991,7 +992,7 @@ void OInterfaceContainer::implReplaceByIndex( const 
sal_Int32 _nIndex, const Any
 
 void OInterfaceContainer::implCheckIndex( const sal_Int32 _nIndex )
 {
-    if (_nIndex < 0 || _nIndex >= static_cast<sal_Int32>(m_aItems.size()))
+    if (_nIndex < 0 || o3tl::make_unsigned(_nIndex) >= m_aItems.size())
         throw IndexOutOfBoundsException();
 }
 
@@ -1008,7 +1009,7 @@ void SAL_CALL 
OInterfaceContainer::replaceByIndex(sal_Int32 _nIndex, const Any&
 
 void OInterfaceContainer::implRemoveByIndex( const sal_Int32 _nIndex, 
::osl::ClearableMutexGuard& _rClearBeforeNotify )
 {
-    OSL_PRECOND( ( _nIndex >= 0 ) && ( _nIndex < 
static_cast<sal_Int32>(m_aItems.size()) ), 
"OInterfaceContainer::implRemoveByIndex: precondition not met (index)!" );
+    OSL_PRECOND( ( _nIndex >= 0 ) && ( o3tl::make_unsigned(_nIndex) < 
m_aItems.size() ), "OInterfaceContainer::implRemoveByIndex: precondition not 
met (index)!" );
 
     OInterfaceArray::iterator i = m_aItems.begin() + _nIndex;
     css::uno::Reference<css::uno::XInterface>  xElement(*i);
diff --git a/forms/source/xforms/binding.cxx b/forms/source/xforms/binding.cxx
index e2f6a8ea02c0..32eeefc75de3 100644
--- a/forms/source/xforms/binding.cxx
+++ b/forms/source/xforms/binding.cxx
@@ -31,6 +31,7 @@
 #include <strings.hrc>
 
 #include <rtl/ustrbuf.hxx>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 
 #include <tools/diagnose_ex.h>
@@ -1042,7 +1043,7 @@ OUString Binding::getListEntry( sal_Int32 nPosition )
 
     // check bounds and return proper item
     PathExpression::NodeVector_t aNodes = maBindingExpression.getNodeList();
-    if( nPosition < 0 || nPosition >= static_cast<sal_Int32>( aNodes.size() ) )
+    if( nPosition < 0 || o3tl::make_unsigned(nPosition) >= aNodes.size() )
         throw IndexOutOfBoundsException("", static_cast<XValueBinding*>(this));
     return lcl_getString( aNodes[ nPosition ] );
 }
diff --git a/i18nutil/source/utility/scripttypedetector.cxx 
b/i18nutil/source/utility/scripttypedetector.cxx
index bea0714f375b..f096ecbde831 100644
--- a/i18nutil/source/utility/scripttypedetector.cxx
+++ b/i18nutil/source/utility/scripttypedetector.cxx
@@ -22,6 +22,7 @@
 #include <com/sun/star/i18n/UnicodeScript.hpp>
 #include <i18nutil/scripttypedetector.hxx>
 #include <i18nutil/unicode.hxx>
+#include <o3tl/safeint.hxx>
 
 using namespace com::sun::star::i18n;
 
@@ -99,7 +100,7 @@ sal_Int32 ScriptTypeDetector::beginOfCTLScriptType( 
std::u16string_view Text, sa
 {
     if (nPos < 0)
         return 0;
-    else if (nPos >= static_cast<sal_Int32>(Text.size()))
+    else if (o3tl::make_unsigned(nPos) >= Text.size())
         return Text.size();
     else {
         sal_Int16 cType = getCTLScriptType(Text, nPos);
@@ -116,7 +117,7 @@ sal_Int32 ScriptTypeDetector::endOfCTLScriptType( 
std::u16string_view Text, sal_
 {
     if (nPos < 0)
         return 0;
-    else if (nPos >= static_cast<sal_Int32>(Text.size()))
+    else if (o3tl::make_unsigned(nPos) >= Text.size())
         return Text.size();
     else {
         sal_Int16 cType = getCTLScriptType(Text, nPos);
diff --git a/linguistic/source/lngopt.cxx b/linguistic/source/lngopt.cxx
index 1b36c43c3075..1a48789aeeed 100644
--- a/linguistic/source/lngopt.cxx
+++ b/linguistic/source/lngopt.cxx
@@ -21,6 +21,7 @@
 #include <sal/macros.h>
 #include "lngopt.hxx"
 #include <linguistic/misc.hxx>
+#include <o3tl/safeint.hxx>
 #include <tools/debug.hxx>
 #include <unotools/lingucfg.hxx>
 
@@ -124,7 +125,8 @@ OUString LinguOptions::GetName( sal_Int32 nWID )
 
     OUString aRes;
 
-    if (0 <= nWID && nWID < sal_Int32(SAL_N_ELEMENTS(aWID_Name)) && aWID_Name[ 
nWID ].nWID == nWID)
+    if (0 <= nWID && o3tl::make_unsigned(nWID) < SAL_N_ELEMENTS(aWID_Name)
+        && aWID_Name[ nWID ].nWID == nWID)
         aRes = aWID_Name[nWID].aPropertyName;
     else
         OSL_FAIL("lng : unknown WID");
diff --git a/oox/source/ppt/comments.cxx b/oox/source/ppt/comments.cxx
index 73b78c34459a..c38397fcad69 100644
--- a/oox/source/ppt/comments.cxx
+++ b/oox/source/ppt/comments.cxx
@@ -11,6 +11,7 @@
 #include <com/sun/star/lang/IllegalArgumentException.hpp>
 #include <rtl/math.h>
 #include <rtl/math.hxx>
+#include <o3tl/safeint.hxx>
 #include <o3tl/string_view.hxx>
 
 namespace oox::ppt
@@ -78,7 +79,7 @@ OUString Comment::getAuthor(const CommentAuthorList& list)
 
 const Comment& CommentList::getCommentAtIndex(int index)
 {
-    if (index >= static_cast<int>(cmLst.size()) || index < 0)
+    if (index < 0 || o3tl::make_unsigned(index) >= cmLst.size())
         throw css::lang::IllegalArgumentException();
 
     return cmLst.at(index);
diff --git a/reportdesign/source/core/api/Functions.cxx 
b/reportdesign/source/core/api/Functions.cxx
index 31928d8b34ec..820d3c0eaba3 100644
--- a/reportdesign/source/core/api/Functions.cxx
+++ b/reportdesign/source/core/api/Functions.cxx
@@ -22,6 +22,7 @@
 #include <strings.hrc>
 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
 #include <com/sun/star/lang/NoSupportException.hpp>
+#include <o3tl/safeint.hxx>
 
 namespace reportdesign
 {
@@ -182,7 +183,7 @@ void SAL_CALL OFunctions::removeContainerListener( const 
uno::Reference< contain
 
 void OFunctions::checkIndex(sal_Int32 _nIndex)
 {
-    if ( _nIndex < 0 || static_cast<sal_Int32>(m_aFunctions.size()) <= _nIndex 
)
+    if ( _nIndex < 0 || m_aFunctions.size() <= o3tl::make_unsigned(_nIndex) )
         throw lang::IndexOutOfBoundsException();
 }
 
diff --git a/reportdesign/source/core/api/Groups.cxx 
b/reportdesign/source/core/api/Groups.cxx
index 6310813134a9..780c6093bec4 100644
--- a/reportdesign/source/core/api/Groups.cxx
+++ b/reportdesign/source/core/api/Groups.cxx
@@ -20,6 +20,7 @@
 #include <Group.hxx>
 #include <com/sun/star/lang/NoSupportException.hpp>
 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
+#include <o3tl/safeint.hxx>
 #include <core_resource.hxx>
 #include <strings.hrc>
 
@@ -184,7 +185,7 @@ void SAL_CALL OGroups::removeContainerListener( const 
uno::Reference< container:
 
 void OGroups::checkIndex(sal_Int32 _nIndex)
 {
-    if ( _nIndex < 0 || static_cast<sal_Int32>(m_aGroups.size()) <= _nIndex )
+    if ( _nIndex < 0 || m_aGroups.size() <= o3tl::make_unsigned(_nIndex) )
         throw lang::IndexOutOfBoundsException();
 }
 
diff --git a/reportdesign/source/core/api/ReportControlModel.cxx 
b/reportdesign/source/core/api/ReportControlModel.cxx
index f1a00af093a0..16dee9bd17bc 100644
--- a/reportdesign/source/core/api/ReportControlModel.cxx
+++ b/reportdesign/source/core/api/ReportControlModel.cxx
@@ -20,6 +20,7 @@
 #include <com/sun/star/beans/XMultiPropertySet.hpp>
 #include <com/sun/star/beans/XPropertyState.hpp>
 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
+#include <o3tl/safeint.hxx>
 namespace reportdesign
 {
 using namespace com::sun::star;
@@ -118,7 +119,7 @@ uno::Any OReportControlModel::getByIndex(::sal_Int32 Index)
 
 void OReportControlModel::checkIndex(sal_Int32 _nIndex)
 {
-    if (_nIndex < 0 || static_cast<sal_Int32>(m_aFormatConditions.size()) <= 
_nIndex)
+    if (_nIndex < 0 || m_aFormatConditions.size() <= 
o3tl::make_unsigned(_nIndex))
         throw lang::IndexOutOfBoundsException();
 }
 
diff --git a/reportdesign/source/core/api/ReportDefinition.cxx 
b/reportdesign/source/core/api/ReportDefinition.cxx
index d6d5e8179d66..4ff066ba86cb 100644
--- a/reportdesign/source/core/api/ReportDefinition.cxx
+++ b/reportdesign/source/core/api/ReportDefinition.cxx
@@ -102,6 +102,7 @@
 #include <dbaccess/dbaundomanager.hxx>
 #include <editeng/paperinf.hxx>
 #include <framework/titlehelper.hxx>
+#include <o3tl/safeint.hxx>
 #include <svl/itempool.hxx>
 #include <svl/undo.hxx>
 #include <svx/svdlayer.hxx>
@@ -2282,7 +2283,7 @@ sal_Int32 SAL_CALL OStylesHelper::getCount(  )
 uno::Any SAL_CALL OStylesHelper::getByIndex( sal_Int32 Index )
 {
     ::osl::MutexGuard aGuard(m_aMutex);
-    if ( Index < 0 || Index >= static_cast<sal_Int32>(m_aElementsPos.size()) )
+    if ( Index < 0 || o3tl::make_unsigned(Index) >= m_aElementsPos.size() )
         throw lang::IndexOutOfBoundsException();
     return m_aElementsPos[Index]->second;
 }
diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx
index 17a6cc17171c..cab605f69080 100644
--- a/sc/source/core/data/dptabsrc.cxx
+++ b/sc/source/core/data/dptabsrc.cxx
@@ -2604,7 +2604,7 @@ const ScDPItemData* ScDPSource::GetItemDataById(sal_Int32 
nDim, sal_Int32 nId)
 const ScDPItemData* ScDPMembers::GetSrcItemDataByIndex(SCROW nIndex)
 {
     const std::vector< SCROW >& memberIds = 
pSource->GetData()->GetColumnEntries( nDim );
-    if ( nIndex >= static_cast<tools::Long>(memberIds.size()) || nIndex < 0 )
+    if ( nIndex < 0 || o3tl::make_unsigned(nIndex) >= memberIds.size()  )
         return nullptr;
     SCROW nId =  memberIds[ nIndex ];
     return pSource->GetItemDataById( nDim, nId );
diff --git a/sc/source/core/data/markmulti.cxx 
b/sc/source/core/data/markmulti.cxx
index 3d8aef3cfafc..4c92f5f25a47 100644
--- a/sc/source/core/data/markmulti.cxx
+++ b/sc/source/core/data/markmulti.cxx
@@ -23,6 +23,8 @@
 #include <segmenttree.hxx>
 #include <sheetlimits.hxx>
 
+#include <o3tl/safeint.hxx>
+
 #include <algorithm>
 
 ScMultiSel::ScMultiSel(const ScSheetLimits& rSheetLimits)
@@ -384,7 +386,7 @@ void ScMultiSel::ShiftCols(SCCOL nStartCol, sal_Int32 
nColOffset)
     }
     aRowSel = aNewMultiSel.aRowSel;
 
-    if (!(nColOffset > 0 && nStartCol > 0 && nStartCol < 
static_cast<SCCOL>(aNewMultiSel.aMultiSelContainer.size())))
+    if (!(nColOffset > 0 && nStartCol > 0 && o3tl::make_unsigned(nStartCol) < 
aNewMultiSel.aMultiSelContainer.size()))
         return;
 
     // insert nColOffset new columns, and select their cells if they are 
selected
diff --git a/sc/source/core/tool/queryparam.cxx 
b/sc/source/core/tool/queryparam.cxx
index 80aa2185c0b3..286a1ef4ff64 100644
--- a/sc/source/core/tool/queryparam.cxx
+++ b/sc/source/core/tool/queryparam.cxx
@@ -24,6 +24,7 @@
 
 #include <svl/sharedstringpool.hxx>
 #include <svl/numformat.hxx>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 
 #include <algorithm>
@@ -453,7 +454,7 @@ bool ScDBQueryParamMatrix::IsValidFieldIndex() const
 {
     SCSIZE nC, nR;
     mpMatrix->GetDimensions(nC, nR);
-    return 0 <= mnField && mnField <= static_cast<SCCOL>(nC);
+    return 0 <= mnField && o3tl::make_unsigned(mnField) <= nC;
 }
 
 ScDBQueryParamMatrix::~ScDBQueryParamMatrix()
diff --git a/sc/source/filter/oox/pivottablebuffer.cxx 
b/sc/source/filter/oox/pivottablebuffer.cxx
index 142ec1b2406e..6d73e26928a9 100644
--- a/sc/source/filter/oox/pivottablebuffer.cxx
+++ b/sc/source/filter/oox/pivottablebuffer.cxx
@@ -40,6 +40,7 @@
 #include <com/sun/star/xml/sax/XFastAttributeList.hpp>
 
 #include <comphelper/sequence.hxx>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <tools/diagnose_ex.h>
 #include <sal/log.hxx>
@@ -551,7 +552,7 @@ void PivotTableField::convertPageField( const 
PTPageFieldModel& rPageField )
     else
     {
         // single item may be selected
-        if( (0 <= rPageField.mnItem) && (rPageField.mnItem < static_cast< 
sal_Int32 >( maItems.size() )) )
+        if( (0 <= rPageField.mnItem) && 
(o3tl::make_unsigned(rPageField.mnItem) < maItems.size()) )
             nCacheItem = maItems[ rPageField.mnItem ].mnCacheItem;
     }
 
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 76ddae4f2ef1..6e6c57f44683 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -2294,7 +2294,7 @@ bool ScImportExport::Sylk2Doc( SvStream& rStrm )
                     if( nCol > nEndCol )
                         nEndCol = nCol;
                 }
-                if ( 0 <= nFormat && nFormat < 
static_cast<sal_Int32>(aFormats.size()) && !bInvalidCol && !bInvalidRow )
+                if ( 0 <= nFormat && o3tl::make_unsigned(nFormat) < 
aFormats.size() && !bInvalidCol && !bInvalidRow )
                 {
                     sal_uInt32 nKey = aFormats[nFormat];
                     rDoc.ApplyAttr( nCol, nRow, aRange.aStart.Tab(),
diff --git a/sc/source/ui/unoobj/appluno.cxx b/sc/source/ui/unoobj/appluno.cxx
index 4096c5f4c384..998d7ef50a7d 100644
--- a/sc/source/ui/unoobj/appluno.cxx
+++ b/sc/source/ui/unoobj/appluno.cxx
@@ -19,6 +19,7 @@
 
 #include <appluno.hxx>
 #include <sal/types.h>
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <formula/funcvarargs.h>
 
@@ -544,7 +545,7 @@ uno::Any SAL_CALL ScFunctionListObj::getByIndex( sal_Int32 
nIndex )
     if ( !pFuncList )
         throw uno::RuntimeException();                  // should not happen
 
-    if ( nIndex >= 0 && nIndex < static_cast<sal_Int32>(pFuncList->GetCount()) 
)
+    if ( nIndex >= 0 && o3tl::make_unsigned(nIndex) < pFuncList->GetCount() )
     {
         const ScFuncDesc* pDesc = pFuncList->GetFunction(nIndex);
         if ( pDesc )
diff --git a/sc/source/ui/unoobj/chart2uno.cxx 
b/sc/source/ui/unoobj/chart2uno.cxx
index 194b166e6bf5..d2fec774e125 100644
--- a/sc/source/ui/unoobj/chart2uno.cxx
+++ b/sc/source/ui/unoobj/chart2uno.cxx
@@ -3205,7 +3205,7 @@ sal_uInt32 getDisplayNumberFormat(const ScDocument* pDoc, 
const ScAddress& rPos)
         return 0;
     }
 
-    if (nIndex < 0 || nIndex >= static_cast<sal_Int32>(m_aDataArray.size()))
+    if (nIndex < 0 || o3tl::make_unsigned(nIndex) >= m_aDataArray.size())
     {
         SAL_WARN("sc.ui", "Passed invalid index to 
getNumberFormatKeyByIndex(). Will return default value '0'.");
         return 0;
diff --git a/sc/source/ui/unoobj/dapiuno.cxx b/sc/source/ui/unoobj/dapiuno.cxx
index 4bf5018e2cd4..64111c1c3437 100644
--- a/sc/source/ui/unoobj/dapiuno.cxx
+++ b/sc/source/ui/unoobj/dapiuno.cxx
@@ -20,6 +20,7 @@
 #include <algorithm>
 #include <cmath>
 
+#include <o3tl/safeint.hxx>
 #include <svl/hint.hxx>
 #include <vcl/svapp.hxx>
 #include <sal/log.hxx>
@@ -2832,7 +2833,7 @@ sal_Int32 SAL_CALL ScDataPilotFieldGroupsObj::getCount()
 Any SAL_CALL ScDataPilotFieldGroupsObj::getByIndex( sal_Int32 nIndex )
 {
     SolarMutexGuard aGuard;
-    if ((nIndex < 0) || (nIndex >= static_cast< sal_Int32 >( maGroups.size() 
)))
+    if ((nIndex < 0) || (o3tl::make_unsigned(nIndex) >= maGroups.size()))
         throw IndexOutOfBoundsException();
     return Any( Reference< XNameAccess >( new ScDataPilotFieldGroupObj( *this, 
maGroups[ nIndex ].maName ) ) );
 }
@@ -3004,7 +3005,7 @@ Any SAL_CALL ScDataPilotFieldGroupObj::getByIndex( 
sal_Int32 nIndex )
 {
     SolarMutexGuard aGuard;
     ScFieldGroupMembers& rMembers = mxParent->getFieldGroup( maGroupName 
).maMembers;
-    if ((nIndex < 0) || (nIndex >= static_cast< sal_Int32 >( rMembers.size() 
)))
+    if ((nIndex < 0) || (o3tl::make_unsigned(nIndex) >= rMembers.size()))
         throw IndexOutOfBoundsException();
     return Any( Reference< XNamed >( new ScDataPilotFieldGroupItemObj( *this, 
rMembers[ nIndex ] ) ) );
 }
diff --git a/sc/source/ui/unoobj/fmtuno.cxx b/sc/source/ui/unoobj/fmtuno.cxx
index 2446ad8e5b50..64ff2841922c 100644
--- a/sc/source/ui/unoobj/fmtuno.cxx
+++ b/sc/source/ui/unoobj/fmtuno.cxx
@@ -19,6 +19,7 @@
 
 #include <sal/config.h>
 
+#include <o3tl/safeint.hxx>
 #include <osl/diagnose.h>
 #include <svl/style.hxx>
 #include <vcl/svapp.hxx>
@@ -342,7 +343,7 @@ void SAL_CALL ScTableConditionalFormat::removeByIndex( 
sal_Int32 nIndex )
 {
     SolarMutexGuard aGuard;
 
-    if (nIndex < static_cast<sal_Int32>(maEntries.size()) && nIndex >= 0)
+    if (nIndex >= 0 && o3tl::make_unsigned(nIndex) < maEntries.size())
     {
         maEntries.erase(maEntries.begin()+nIndex);
     }
diff --git a/sc/source/ui/unoobj/nameuno.cxx b/sc/source/ui/unoobj/nameuno.cxx
index ea54ee508831..1a1184c002be 100644
--- a/sc/source/ui/unoobj/nameuno.cxx
+++ b/sc/source/ui/unoobj/nameuno.cxx
@@ -17,6 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
+#include <o3tl/safeint.hxx>
 #include <svl/hint.hxx>
 #include <vcl/svapp.hxx>
 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
@@ -1087,7 +1088,7 @@ void SAL_CALL ScLabelRangesObj::removeByIndex( sal_Int32 
nIndex )
         ScDocument& rDoc = pDocShell->GetDocument();
         ScRangePairList* pOldList = bColumn ? rDoc.GetColNameRanges() : 
rDoc.GetRowNameRanges();
 
-        if ( pOldList && nIndex >= 0 && nIndex < 
static_cast<sal_Int32>(pOldList->size()) )
+        if ( pOldList && nIndex >= 0 && o3tl::make_unsigned(nIndex) < 
pOldList->size() )
         {
             ScRangePairListRef xNewList(pOldList->Clone());
 
diff --git a/sc/source/ui/vba/vbafiledialogitems.cxx 
b/sc/source/ui/vba/vbafiledialogitems.cxx
index f64f706d3a7c..d34ace3c55e3 100644
--- a/sc/source/ui/vba/vbafiledialogitems.cxx
+++ b/sc/source/ui/vba/vbafiledialogitems.cxx
@@ -16,6 +16,9 @@
  *   except in compliance with the License. You may obtain a copy of
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
+
+#include <o3tl/safeint.hxx>
+
 #include "vbafiledialogitems.hxx"
 
 using namespace ::com::sun::star;
@@ -71,7 +74,7 @@ ScVbaFileDialogSelectedItems::createCollectionObject( const 
uno::Any& aSource )
     sal_Int32 nPosition = -1;
     if (!(aSource >>= nPosition))
         throw uno::RuntimeException("not an sal_Int32");
-    if (nPosition < 0 || nPosition >= static_cast<sal_Int32>(m_sItems.size()))
+    if (nPosition < 0 || o3tl::make_unsigned(nPosition) >= m_sItems.size())
         throw uno::RuntimeException("out of range");
 
     OUString sPath = m_sItems[nPosition];
diff --git a/sd/source/filter/html/buttonset.cxx 
b/sd/source/filter/html/buttonset.cxx
index 1bc24a7e33cd..3929f74222e8 100644
--- a/sd/source/filter/html/buttonset.cxx
+++ b/sd/source/filter/html/buttonset.cxx
@@ -25,6 +25,7 @@
 #include <com/sun/star/graphic/XGraphicProvider.hpp>
 #include <com/sun/star/io/XStream.hpp>
 
+#include <o3tl/safeint.hxx>
 #include <osl/file.hxx>
 #include <comphelper/storagehelper.hxx>
 #include <comphelper/oslfile2streamwrap.hxx>
@@ -195,7 +196,7 @@ int ButtonSetImpl::getCount() const
 
 bool ButtonSetImpl::getPreview( int nSet, const std::vector< OUString >& 
rButtons, Image& rImage )
 {
-    if( (nSet >= 0) && (nSet < static_cast<int>(maButtons.size())))
+    if( (nSet >= 0) && (o3tl::make_unsigned(nSet) < maButtons.size()))
     {
         ButtonsImpl& rSet = *maButtons[nSet];
 
@@ -243,7 +244,7 @@ bool ButtonSetImpl::getPreview( int nSet, const 
std::vector< OUString >& rButton
 
 bool ButtonSetImpl::exportButton( int nSet, const OUString& rPath, const 
OUString& rName )
 {
-    if( (nSet >= 0) && (nSet < static_cast<int>(maButtons.size())))
+    if( (nSet >= 0) && (o3tl::make_unsigned(nSet) < maButtons.size()))
     {
         ButtonsImpl& rSet = *maButtons[nSet];
 
diff --git a/sd/source/ui/app/sdxfer.cxx b/sd/source/ui/app/sdxfer.cxx
index 14e63798aec9..67016fd194e1 100644
--- a/sd/source/ui/app/sdxfer.cxx
+++ b/sd/source/ui/app/sdxfer.cxx
@@ -35,6 +35,7 @@
 #include <editeng/outlobj.hxx>
 #include <sot/storage.hxx>
 #include <editeng/editobj.hxx>
+#include <o3tl/safeint.hxx>
 #include <svx/svdobjkind.hxx>
 #include <svx/svdouno.hxx>
 #include <svx/ImageMapInfo.hxx>
@@ -725,7 +726,7 @@ sal_Int32 SdTransferable::GetUserDataCount() const
 
 std::shared_ptr<SdTransferable::UserData> SdTransferable::GetUserData (const 
sal_Int32 nIndex) const
 {
-    if (nIndex>=0 && nIndex<sal_Int32(maUserData.size()))
+    if (nIndex>=0 && o3tl::make_unsigned(nIndex)<maUserData.size())
         return maUserData[nIndex];
     else
         return std::shared_ptr<UserData>();
diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx 
b/sd/source/ui/slideshow/slideshowimpl.cxx
index b896fbb4ebbf..3215a550b7c1 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -78,6 +78,7 @@
 #include <comphelper/processfactory.hxx>
 #include <comphelper/propertyvalue.hxx>
 #include <rtl/ref.hxx>
+#include <o3tl/safeint.hxx>
 #include <o3tl/string_view.hxx>
 #include <avmedia/mediawindow.hxx>
 #include <svtools/colrdlg.hxx>
@@ -166,7 +167,7 @@ private:
     bool getSlideAPI( sal_Int32 nSlideNumber, Reference< XDrawPage >& xSlide, 
Reference< XAnimationNode >& xAnimNode );
     sal_Int32 findSlideIndex( sal_Int32 nSlideNumber ) const;
 
-    bool isValidIndex( sal_Int32 nIndex ) const { return (nIndex >= 0) && 
(nIndex < static_cast<sal_Int32>(maSlideNumbers.size())); }
+    bool isValidIndex( sal_Int32 nIndex ) const { return (nIndex >= 0) && 
(o3tl::make_unsigned(nIndex) < maSlideNumbers.size()); }
     bool isValidSlideNumber( sal_Int32 nSlideNumber ) const { return 
(nSlideNumber >= 0) && (nSlideNumber < mnSlideCount); }
 
 private:
diff --git a/sd/source/ui/slidesorter/model/SlideSorterModel.cxx 
b/sd/source/ui/slidesorter/model/SlideSorterModel.cxx
index 365c9127944d..4d3e7965690b 100644
--- a/sd/source/ui/slidesorter/model/SlideSorterModel.cxx
+++ b/sd/source/ui/slidesorter/model/SlideSorterModel.cxx
@@ -41,6 +41,7 @@
 #include <sdpage.hxx>
 #include <FrameView.hxx>
 
+#include <o3tl/safeint.hxx>
 #include <tools/diagnose_ex.h>
 
 using namespace ::com::sun::star;
@@ -616,7 +617,7 @@ bool SlideSorterModel::DeleteSlide (const SdPage* pPage)
 
     bool bMarkedSelected(false);
 
-    if(nIndex >= 0 && nIndex < 
static_cast<sal_Int32>(maPageDescriptors.size()))
+    if(nIndex >= 0 && o3tl::make_unsigned(nIndex) < maPageDescriptors.size())
     {
         if (maPageDescriptors[nIndex])
             if (maPageDescriptors[nIndex]->GetPage() != pPage)
diff --git a/sd/source/ui/unoidl/unocpres.cxx b/sd/source/ui/unoidl/unocpres.cxx
index e5c9eb16e021..cc57b1e7941a 100644
--- a/sd/source/ui/unoidl/unocpres.cxx
+++ b/sd/source/ui/unoidl/unocpres.cxx
@@ -21,6 +21,7 @@
 
 #include <com/sun/star/lang/DisposedException.hpp>
 #include <com/sun/star/lang/IndexOutOfBoundsException.hpp>
+#include <o3tl/safeint.hxx>
 #include <vcl/svapp.hxx>
 #include <svx/svdpage.hxx>
 #include <cppuhelper/supportsservice.hxx>
@@ -84,7 +85,7 @@ void SAL_CALL SdXCustomPresentation::insertByIndex( sal_Int32 
Index, const uno::
     if( bDisposing )
         throw lang::DisposedException();
 
-    if( Index < 0 || Index > static_cast<sal_Int32>( mpSdCustomShow ? 
mpSdCustomShow->PagesVector().size() : 0 ) )
+    if( Index < 0 || o3tl::make_unsigned(Index) > ( mpSdCustomShow ? 
mpSdCustomShow->PagesVector().size() : 0 ) )
         throw lang::IndexOutOfBoundsException();
 

... etc. - the rest is truncated

Reply via email to