[Libreoffice-commits] core.git: 6 commits - bridges/source comphelper/source cppu/source framework/source idlc/source include/LibreOfficeKit registry/source sal/osl sal/rtl sc/source sd/source sfx2/source soltools/cpp soltools/mkdepend svtools/source sw/source unoidl/source unotest/source vcl/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Fri Jul 27 07:33:29 UTC 2018


 bridges/source/cpp_uno/shared/bridge.cxx                   |    2 
 bridges/source/jni_uno/jni_bridge.cxx                      |    4 
 bridges/source/jni_uno/jni_info.cxx                        |    6 -
 comphelper/source/misc/threadpool.cxx                      |    2 
 cppu/source/typelib/static_types.cxx                       |    2 
 cppu/source/typelib/typelib.cxx                            |    2 
 framework/source/accelerators/acceleratorconfiguration.cxx |    4 
 idlc/source/parser.y                                       |    2 
 include/LibreOfficeKit/LibreOfficeKitInit.h                |    6 -
 registry/source/regimpl.cxx                                |    6 -
 sal/osl/unx/file.cxx                                       |    4 
 sal/osl/unx/pipe.cxx                                       |    9 -
 sal/osl/unx/profile.cxx                                    |    1 
 sal/osl/w32/file.cxx                                       |    4 
 sal/rtl/alloc_arena.cxx                                    |    2 
 sal/rtl/alloc_cache.cxx                                    |    6 -
 sc/source/core/tool/compiler.cxx                           |    1 
 sc/source/filter/xml/xmldpimp.cxx                          |    6 -
 sc/source/filter/xml/xmldpimp.hxx                          |    3 
 sc/source/ui/view/viewdata.cxx                             |    2 
 sd/source/ui/animations/CustomAnimationPane.cxx            |    2 
 sd/source/ui/unoidl/unosrch.cxx                            |   71 ++++---------
 sfx2/source/control/itemdel.cxx                            |    2 
 soltools/cpp/_unix.c                                       |    1 
 soltools/mkdepend/parse.c                                  |    1 
 svtools/source/svhtml/htmlout.cxx                          |    2 
 sw/source/ui/index/cnttab.cxx                              |    9 -
 unoidl/source/legacyprovider.cxx                           |   32 +++--
 unotest/source/cpp/officeconnection.cxx                    |    2 
 vcl/source/gdi/pdfwriter_impl.cxx                          |    1 
 30 files changed, 93 insertions(+), 104 deletions(-)

New commits:
commit ba1e1727c238210b022741a710486964f28bb065
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jul 26 12:22:16 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Jul 27 09:32:19 2018 +0200

    Related: rhbz#1602589 add comments to coverity annotations
    
    Change-Id: I88c941832a0d682ea4b6028c28edd48cf5df38f7
    Reviewed-on: https://gerrit.libreoffice.org/58093
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/bridges/source/cpp_uno/shared/bridge.cxx b/bridges/source/cpp_uno/shared/bridge.cxx
index 556350022e48..186d89aa1956 100644
--- a/bridges/source/cpp_uno/shared/bridge.cxx
+++ b/bridges/source/cpp_uno/shared/bridge.cxx
@@ -144,7 +144,7 @@ uno_Mapping * Bridge::createMapping(
     bool bExportCpp2Uno)
 {
     Bridge * bridge = new Bridge(pCppEnv, pUnoEnv, bExportCpp2Uno);
-    //coverity[leaked_storage]
+    // coverity[leaked_storage] - on purpose
     return bExportCpp2Uno ? &bridge->aCpp2Uno : &bridge->aUno2Cpp;
 }
 
diff --git a/bridges/source/jni_uno/jni_bridge.cxx b/bridges/source/jni_uno/jni_bridge.cxx
index 4a0d4b30af53..7f38d3221420 100644
--- a/bridges/source/jni_uno/jni_bridge.cxx
+++ b/bridges/source/jni_uno/jni_bridge.cxx
@@ -552,7 +552,7 @@ SAL_DLLPUBLIC_EXPORT void uno_ext_getMapping(
             uno_registerMapping(
                 &mapping, Bridge_free,
                 pFrom, &pTo->pExtEnv->aBase, nullptr );
-            // coverity[leaked_storage]
+            // coverity[leaked_storage] - on purpose
         }
         else if ( from_env_typename == UNO_LB_UNO && to_env_typename == UNO_LB_JAVA )
         {
@@ -562,7 +562,7 @@ SAL_DLLPUBLIC_EXPORT void uno_ext_getMapping(
             uno_registerMapping(
                 &mapping, Bridge_free,
                 &pFrom->pExtEnv->aBase, pTo, nullptr );
-            // coverity[leaked_storage]
+            // coverity[leaked_storage] - on purpose
         }
     }
     catch (const BridgeRuntimeError & err)
diff --git a/bridges/source/jni_uno/jni_info.cxx b/bridges/source/jni_uno/jni_info.cxx
index 9b43356856af..045ac44ee6be 100644
--- a/bridges/source/jni_uno/jni_info.cxx
+++ b/bridges/source/jni_uno/jni_info.cxx
@@ -103,7 +103,7 @@ JNI_interface_type_info::JNI_interface_type_info(
             typelib_InterfaceTypeDescription * td =
                 reinterpret_cast< typelib_InterfaceTypeDescription * >(
                     m_td.get() );
-            // coverity [ctor_dtor_leak]
+            // coverity[ctor_dtor_leak] - on purpose
             m_methods.reset(new jmethodID[ td->nMapFunctionIndexToMemberIndex ]);
             sal_Int32 nMethodIndex = 0;
             typelib_TypeDescriptionReference ** ppMembers = td->ppMembers;
@@ -288,7 +288,7 @@ JNI_compound_type_info::JNI_compound_type_info(
                 td->aBase.pWeakRef,
                 jni_info->m_RuntimeException_type.getTypeLibType() ))
         {
-            // coverity [ctor_dtor_leak]
+            // coverity[ctor_dtor_leak] - on purpose
             m_fields.reset(new jfieldID[ 2 ]);
             m_fields[ 0 ] = nullptr; // special Throwable.getMessage()
             // field Context
@@ -860,7 +860,7 @@ JNI_info::JNI_info(
     {
         css::uno::TypeDescription XInterface_td(
             cppu::UnoType<css::uno::XInterface>::get());
-        // coverity [ctor_dtor_leak]
+        // coverity[ctor_dtor_leak] - on purpose
         m_XInterface_type_info =
             new JNI_interface_type_info( jni, XInterface_td.get() );
     }
diff --git a/comphelper/source/misc/threadpool.cxx b/comphelper/source/misc/threadpool.cxx
index 650541406a6a..fc9b2b3e5404 100644
--- a/comphelper/source/misc/threadpool.cxx
+++ b/comphelper/source/misc/threadpool.cxx
@@ -154,7 +154,7 @@ void ThreadPool::shutdownLocked(std::unique_lock<std::mutex>& aGuard)
     }
     assert( maTasks.empty() );
 
-    // coverity[missing_lock]
+    // coverity[missing_lock] - on purpose
     mbTerminate = true;
 
     maTasksChanged.notify_all();
diff --git a/cppu/source/typelib/static_types.cxx b/cppu/source/typelib/static_types.cxx
index eabd3950450f..2a3a5432b07f 100644
--- a/cppu/source/typelib/static_types.cxx
+++ b/cppu/source/typelib/static_types.cxx
@@ -439,7 +439,7 @@ void SAL_CALL typelib_static_interface_type_init(
     typelib_TypeDescriptionReference * pBaseType )
     SAL_THROW_EXTERN_C()
 {
-    // coverity[callee_ptr_arith]
+    // coverity[callee_ptr_arith] - not a bug
     typelib_static_mi_interface_type_init(
         ppRef, pTypeName, pBaseType == nullptr ? 0 : 1, &pBaseType);
 }
diff --git a/cppu/source/typelib/typelib.cxx b/cppu/source/typelib/typelib.cxx
index 46238d5481b0..ec51f2128143 100644
--- a/cppu/source/typelib/typelib.cxx
+++ b/cppu/source/typelib/typelib.cxx
@@ -890,7 +890,7 @@ extern "C" void SAL_CALL typelib_typedescription_newInterface(
     typelib_TypeDescriptionReference ** ppMembers )
     SAL_THROW_EXTERN_C()
 {
-    // coverity[callee_ptr_arith]
+    // coverity[callee_ptr_arith] - not a bug
     typelib_typedescription_newMIInterface(
         ppRet, pTypeName, 0, 0, 0, 0, 0, pBaseInterface == nullptr ? 0 : 1,
         &pBaseInterface, nMembers, ppMembers);
diff --git a/framework/source/accelerators/acceleratorconfiguration.cxx b/framework/source/accelerators/acceleratorconfiguration.cxx
index f8995ea47561..398b2ed5978f 100644
--- a/framework/source/accelerators/acceleratorconfiguration.cxx
+++ b/framework/source/accelerators/acceleratorconfiguration.cxx
@@ -1123,7 +1123,7 @@ void XCUBasedAcceleratorConfiguration::impl_ts_save(bool bPreferred)
 
         // take over all changes into the original container
         SolarMutexGuard g;
-        // coverity[check_after_deref]
+        // coverity[check_after_deref] - confusing but correct
         if (m_pPrimaryWriteCache)
         {
             m_aPrimaryReadCache.takeOver(*m_pPrimaryWriteCache);
@@ -1161,7 +1161,7 @@ void XCUBasedAcceleratorConfiguration::impl_ts_save(bool bPreferred)
 
         // take over all changes into the original container
         SolarMutexGuard g;
-        // coverity[check_after_deref]
+        // coverity[check_after_deref] - confusing but correct
         if (m_pSecondaryWriteCache)
         {
             m_aSecondaryReadCache.takeOver(*m_pSecondaryWriteCache);
diff --git a/idlc/source/parser.y b/idlc/source/parser.y
index 9cc9e8d5ab5d..cb5f3ec470e3 100644
--- a/idlc/source/parser.y
+++ b/idlc/source/parser.y
@@ -2115,7 +2115,7 @@ at_least_one_scoped_name :
         } else
         {
             std::list< OString >* pScopedNames = new std::list< OString >;
-            // coverity [copy_paste_error]
+            // coverity[copy_paste_error] - this is not a cut and paste
             pScopedNames->push_back(*$1);
             $$ = pScopedNames;
         }
diff --git a/include/LibreOfficeKit/LibreOfficeKitInit.h b/include/LibreOfficeKit/LibreOfficeKitInit.h
index 687090a58b9f..a4befd405cb1 100644
--- a/include/LibreOfficeKit/LibreOfficeKitInit.h
+++ b/include/LibreOfficeKit/LibreOfficeKitInit.h
@@ -287,13 +287,13 @@ static LibreOfficeKit *lok_init_2( const char *install_path,  const char *user_p
         }
         free( imp_lib );
         // dlhandle is "leaked"
-        // coverity[leaked_storage]
+        // coverity[leaked_storage] - on purpose
         return pSym( install_path );
     }
 
     free( imp_lib );
     // dlhandle is "leaked"
-    // coverity[leaked_storage]
+    // coverity[leaked_storage] - on purpose
     return pSym2( install_path, user_profile_url );
 #else
     return libreofficekit_hook_2( install_path, user_profile_url );
@@ -330,7 +330,7 @@ int lok_preinit( const char *install_path,  const char *user_profile_url )
     free( imp_lib );
 
     // dlhandle is "leaked"
-    // coverity[leaked_storage]
+    // coverity[leaked_storage] - on purpose
     return pSym( install_path, user_profile_url );
 }
 #endif
diff --git a/registry/source/regimpl.cxx b/registry/source/regimpl.cxx
index 79279b1f3f90..1e24220f0ee9 100644
--- a/registry/source/regimpl.cxx
+++ b/registry/source/regimpl.cxx
@@ -324,8 +324,7 @@ void dumpType(typereg::Reader const & reader, OString const & indent) {
             printf(
                 "%s    parameter count: %u\n", indent.getStr(),
                 static_cast< unsigned int >(reader.getMethodParameterCount(i)));
-            // coverity[tainted_data] cid#1215304 unhelpfully warns about an
-            // untrusted loop bound here:
+            // coverity[tainted_data] - cid#1215304 unhelpfully warns about untrusted loop bound
             for (sal_uInt16 j = 0; j < reader.getMethodParameterCount(i); ++j)
             {
                 printf(
@@ -366,8 +365,7 @@ void dumpType(typereg::Reader const & reader, OString const & indent) {
             printf(
                 "%s    exception count: %u\n", indent.getStr(),
                 static_cast< unsigned int >(reader.getMethodExceptionCount(i)));
-            // coverity[tainted_data] cid#1215304 unhelpfully warns about an
-            // untrusted loop bound here:
+            // coverity[tainted_data] - cid#1215304 unhelpfully warns about untrusted loop bound
             for (sal_uInt16 j = 0; j < reader.getMethodExceptionCount(i); ++j)
             {
                 printf(
diff --git a/sal/osl/unx/file.cxx b/sal/osl/unx/file.cxx
index 0101bf6f8e36..94aa6e42fc8a 100644
--- a/sal/osl/unx/file.cxx
+++ b/sal/osl/unx/file.cxx
@@ -1134,10 +1134,10 @@ const off_t MAX_OFF_T = std::numeric_limits< off_t >::max();
 
 namespace {
 
-//coverity[result_independent_of_operands]
+// coverity[result_independent_of_operands] - crossplatform requirement
 template<typename T> bool exceedsMaxOffT(T n) { return n > MAX_OFF_T; }
 
-//coverity[result_independent_of_operands]
+// coverity[result_independent_of_operands] - crossplatform requirement
 template<typename T> bool exceedsMinOffT(T n)
 { return n < std::numeric_limits<off_t>::min(); }
 
diff --git a/sal/osl/unx/pipe.cxx b/sal/osl/unx/pipe.cxx
index 0c68255dbb1d..eb03ff2280c5 100644
--- a/sal/osl/unx/pipe.cxx
+++ b/sal/osl/unx/pipe.cxx
@@ -287,10 +287,11 @@ oslPipe osl_psz_createPipe(const sal_Char *pszPipeName, oslPipeOptions Options,
         if (listen(pPipe->m_Socket, 5) < 0)
         {
             SAL_WARN("sal.osl.pipe", "listen() failed: " << strerror(errno));
-            // coverity[toctou] cid#1255391 warns about unlink(name) after
-            // stat(name, &status) above, but the intervening call to bind makes
-            // those two clearly unrelated, as it would fail if name existed at
-            // that point in time:
+            // cid#1255391 warns about unlink(name) after stat(name, &status)
+            // above, but the intervening call to bind makes those two clearly
+            // unrelated, as it would fail if name existed at that point in
+            // time:
+            // coverity[toctou] - this is bogus
             unlink(name);   /* remove filesystem entry */
             close(pPipe->m_Socket);
             destroyPipeImpl(pPipe);
diff --git a/sal/osl/w32/file.cxx b/sal/osl/w32/file.cxx
index aed1b315bb9e..a63b58a1bdca 100644
--- a/sal/osl/w32/file.cxx
+++ b/sal/osl/w32/file.cxx
@@ -776,7 +776,7 @@ oslFileError SAL_CALL osl_closeFile(oslFileHandle Handle)
 
 namespace {
 
-//coverity[result_independent_of_operands]
+// coverity[result_independent_of_operands] - crossplatform requirement
 template<typename T> bool exceedsMaxSIZE_T(T n)
 { return n > std::numeric_limits< SIZE_T >::max(); }
 
@@ -930,7 +930,7 @@ LONGLONG const g_limit_longlong = std::numeric_limits< LONGLONG >::max();
 
 namespace {
 
-//coverity[result_independent_of_operands]
+// coverity[result_independent_of_operands] - crossplatform requirement
 template<typename T> bool exceedsMaxLONGLONG(T n)
 { return n > g_limit_longlong; }
 
diff --git a/sal/rtl/alloc_arena.cxx b/sal/rtl/alloc_arena.cxx
index 1cd06615d1a3..39e694e017d8 100644
--- a/sal/rtl/alloc_arena.cxx
+++ b/sal/rtl/alloc_arena.cxx
@@ -258,7 +258,7 @@ void rtl_arena_hash_rescale(
                 rtl_arena_segment_type  * next = curr->m_fnext;
                 rtl_arena_segment_type ** head;
 
-                // coverity[negative_shift]
+                // coverity[negative_shift] - bogus
                 head = &(arena->m_hash_table[RTL_ARENA_HASH_INDEX(arena, curr->m_addr)]);
                 curr->m_fnext = (*head);
                 (*head) = curr;
diff --git a/sal/rtl/alloc_cache.cxx b/sal/rtl/alloc_cache.cxx
index 38449ccfb795..41886c7ac235 100644
--- a/sal/rtl/alloc_cache.cxx
+++ b/sal/rtl/alloc_cache.cxx
@@ -817,7 +817,7 @@ void rtl_cache_deactivate(rtl_cache_type * cache)
         /* cleanup cpu layer */
         if ((mag = cache->m_cpu_curr))
         {
-            // coverity[missing_lock]
+            // coverity[missing_lock] - locking is fine
             cache->m_cpu_curr = nullptr;
             rtl_cache_magazine_clear (cache, mag);
             rtl_cache_free (mag_cache, mag);
@@ -825,7 +825,7 @@ void rtl_cache_deactivate(rtl_cache_type * cache)
 
         if ((mag = cache->m_cpu_prev))
         {
-            // coverity[missing_lock]
+            // coverity[missing_lock] - locking is fine
             cache->m_cpu_prev = nullptr;
             rtl_cache_magazine_clear (cache, mag);
             rtl_cache_free (mag_cache, mag);
@@ -1267,7 +1267,7 @@ static void rtl_cache_depot_wsupdate(
             RTL_MEMORY_LOCK_ACQUIRE(&(cache->m_depot_lock));
         }
     }
-    // coverity[missing_unlock]
+    // coverity[missing_unlock] - locking is fine
 }
 
 /**
diff --git a/sfx2/source/control/itemdel.cxx b/sfx2/source/control/itemdel.cxx
index c6d53ef45936..d0555950dd39 100644
--- a/sfx2/source/control/itemdel.cxx
+++ b/sfx2/source/control/itemdel.cxx
@@ -77,7 +77,7 @@ void DeleteItemOnIdle(SfxPoolItem* pItem)
     DBG_ASSERT( 0 == pItem->GetRefCount(), "deleting item in use" );
     SfxItemDisruptor_Impl *pDesruptor = new SfxItemDisruptor_Impl(pItem);
     pDesruptor->LaunchDeleteOnIdle();
-    // coverity[leaked_storage] pDesruptor takes care of its own destruction at idle time
+    // coverity[leaked_storage] - pDesruptor takes care of its own destruction at idle time
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svtools/source/svhtml/htmlout.cxx b/svtools/source/svhtml/htmlout.cxx
index fb0a5b941a17..ae382dbb437c 100644
--- a/svtools/source/svhtml/htmlout.cxx
+++ b/svtools/source/svhtml/htmlout.cxx
@@ -465,7 +465,7 @@ static OString lcl_ConvertCharToHTML( sal_uInt32 c,
             // If the character could not be converted to the destination
             // character set, the UNICODE character is exported as character
             // entity.
-            // coverity[callee_ptr_arith]
+            // coverity[callee_ptr_arith] - its ok
             nLen = lcl_FlushContext(rContext, cBuffer, nFlags);
             sal_Char *pBuffer = cBuffer;
             while( nLen-- )
diff --git a/unoidl/source/legacyprovider.cxx b/unoidl/source/legacyprovider.cxx
index a7eb47fc7a88..eb9462c733f2 100644
--- a/unoidl/source/legacyprovider.cxx
+++ b/unoidl/source/legacyprovider.cxx
@@ -259,9 +259,9 @@ rtl::Reference< Entity > readEntity(
                             {
                                 sal_uInt16 m
                                     = reader.getMethodExceptionCount(k);
-                                // coverity[tainted_data] cid#1213376
-                                // unhelpfully warns about an untrusted loop
-                                // bound here:
+                                // cid#1213376 unhelpfully warns about an
+                                // untrusted loop bound here:
+                                // coverity[tainted_data] - trusted data source
                                 for (sal_uInt16 l = 0; l != m; ++l) {
                                     getExcs.push_back(
                                         reader.getMethodExceptionTypeName(k, l).
@@ -273,9 +273,9 @@ rtl::Reference< Entity > readEntity(
                             {
                                 sal_uInt16 m
                                     = reader.getMethodExceptionCount(k);
-                                // coverity[tainted_data] cid#1213376
-                                // unhelpfully warns about an untrusted loop
-                                // bound here:
+                                // cid#1213376 unhelpfully warns about an
+                                // untrusted loop bound here:
+                                // coverity[tainted_data] - trusted data source
                                 for (sal_uInt16 l = 0; l != m; ++l) {
                                     setExcs.push_back(
                                         reader.getMethodExceptionTypeName(k, l).
@@ -309,8 +309,9 @@ rtl::Reference< Entity > readEntity(
                     std::vector< InterfaceTypeEntity::Method::Parameter >
                         params;
                     sal_uInt16 m = reader.getMethodParameterCount(j);
-                    // coverity[tainted_data] cid#1213376 unhelpfully warns
-                    // about an untrusted loop bound here:
+                    // cid#1213376 unhelpfully warns about an untrusted loop
+                    // bound here:
+                    // coverity[tainted_data] - trusted data source
                     for (sal_uInt16 k = 0; k != m; ++k) {
                         RTParamMode mode = reader.getMethodParameterFlags(j, k);
                         InterfaceTypeEntity::Method::Parameter::Direction dir;
@@ -342,8 +343,9 @@ rtl::Reference< Entity > readEntity(
                     }
                     std::vector< OUString > excs;
                     m = reader.getMethodExceptionCount(j);
-                    // coverity[tainted_data] cid#1213376 unhelpfully warns
-                    // about an untrusted loop bound here:
+                    // cid#1213376 unhelpfully warns about an untrusted loop
+                    // bound here:
+                    // coverity[tainted_data] - trusted data source
                     for (sal_uInt16 k = 0; k != m; ++k) {
                         excs.push_back(
                             reader.getMethodExceptionTypeName(j, k).replace(
@@ -607,8 +609,9 @@ rtl::Reference< Entity > readEntity(
                             SingleInterfaceBasedServiceEntity::Constructor::
                             Parameter > params;
                         sal_uInt16 m = reader.getMethodParameterCount(j);
-                        // coverity[tainted_data] cid#1213376 unhelpfully warns
-                        // about an untrusted loop bound here:
+                        // cid#1213376 unhelpfully warns about an untrusted
+                        // loop bound here:
+                        // coverity[tainted_data] - trusted data source
                         for (sal_uInt16 k = 0; k != m; ++k) {
                             RTParamMode mode
                                 = reader.getMethodParameterFlags(j, k);
@@ -647,8 +650,9 @@ rtl::Reference< Entity > readEntity(
                         }
                         std::vector< OUString > excs;
                         m = reader.getMethodExceptionCount(j);
-                        // coverity[tainted_data] cid#1213376 unhelpfully warns
-                        // about an untrusted loop bound here:
+                        // cid#1213376 unhelpfully warns about an untrusted
+                        // loop bound here:
+                        // coverity[tainted_data] - trusted data source
                         for (sal_uInt16 k = 0; k != m; ++k) {
                             excs.push_back(
                                 reader.getMethodExceptionTypeName(j, k).replace(
diff --git a/unotest/source/cpp/officeconnection.cxx b/unotest/source/cpp/officeconnection.cxx
index a82471e3b921..c85ad7b72e5f 100644
--- a/unotest/source/cpp/officeconnection.cxx
+++ b/unotest/source/cpp/officeconnection.cxx
@@ -78,7 +78,7 @@ void OfficeConnection::setUp() {
         {
             envs = &argEnv.pData;
         }
-        // coverity[callee_ptr_arith]
+        // coverity[callee_ptr_arith] - arith is fine
         CPPUNIT_ASSERT_EQUAL(
             osl_Process_E_None,
             osl_executeProcess(
commit 877dd9e9d1c1774817fa96f62adda98d5bce0ce8
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jul 26 14:49:17 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Jul 27 09:31:31 2018 +0200

    Related: rhbz#1602589 fix leaked_storage
    
    no logic change intended
    
    Change-Id: Ic4d54965033e518195ef8e76ddec7feca14970c2
    Reviewed-on: https://gerrit.libreoffice.org/58125
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sd/source/ui/unoidl/unosrch.cxx b/sd/source/ui/unoidl/unosrch.cxx
index c46753cfc4b9..7233d37d3b77 100644
--- a/sd/source/ui/unoidl/unosrch.cxx
+++ b/sd/source/ui/unoidl/unosrch.cxx
@@ -54,11 +54,10 @@ class SearchContext_impl
 {
     uno::Reference< drawing::XShapes > mxShapes;
     sal_Int32 mnIndex;
-    SearchContext_impl* mpParent;
 
 public:
-    SearchContext_impl( uno::Reference< drawing::XShapes > const & xShapes, SearchContext_impl* pParent = nullptr )
-        : mxShapes( xShapes ), mnIndex( -1 ), mpParent( pParent ) {}
+    SearchContext_impl(uno::Reference<drawing::XShapes> const& xShapes)
+        : mxShapes( xShapes ), mnIndex( -1 ) {}
 
     uno::Reference< drawing::XShape > firstShape()
     {
@@ -76,8 +75,6 @@ public:
         }
         return xShape;
     }
-
-    SearchContext_impl* getParent() const { return mpParent; }
 };
 
 /* ================================================================= */
@@ -111,7 +108,7 @@ sal_Int32 SAL_CALL SdUnoSearchReplaceShape::replaceAll( const uno::Reference< ut
     uno::Reference< drawing::XShapes >  xShapes;
     uno::Reference< drawing::XShape >  xShape;
 
-    SearchContext_impl* pContext = nullptr;
+    std::vector<SearchContext_impl> aContexts;
     if(mpPage)
     {
         uno::Reference< drawing::XDrawPage > xPage( mpPage );
@@ -120,8 +117,8 @@ sal_Int32 SAL_CALL SdUnoSearchReplaceShape::replaceAll( const uno::Reference< ut
 
         if( xShapes.is() && (xShapes->getCount() > 0) )
         {
-            pContext = new SearchContext_impl( xShapes );
-            xShape = pContext->firstShape();
+            aContexts.push_back(SearchContext_impl(xShapes));
+            xShape = aContexts.back().firstShape();
         }
         else
         {
@@ -152,34 +149,24 @@ sal_Int32 SAL_CALL SdUnoSearchReplaceShape::replaceAll( const uno::Reference< ut
         uno::Reference< drawing::XShapes > xGroupShape( xShape, uno::UNO_QUERY );
         if( xGroupShape.is() && ( xGroupShape->getCount() > 0 ) )
         {
-            pContext = new SearchContext_impl( xGroupShape, pContext );
-            xShape = pContext->firstShape();
+            aContexts.push_back(SearchContext_impl(xGroupShape));
+            xShape = aContexts.back().firstShape();
         }
         else
         {
-            if( pContext )
-                xShape = pContext->nextShape();
+            if (!aContexts.empty())
+                xShape = aContexts.back().nextShape();
             else
                 xShape = nullptr;
         }
 
         // test parent contexts for next shape if none
         // is found in the current context
-        while( pContext && !xShape.is() )
+        while (!aContexts.empty() && !xShape.is())
         {
-            if( pContext->getParent() )
-            {
-                SearchContext_impl* pOldContext = pContext;
-                pContext = pContext->getParent();
-                delete pOldContext;
-                xShape = pContext->nextShape();
-            }
-            else
-            {
-                delete pContext;
-                pContext = nullptr;
-                xShape = nullptr;
-            }
+            aContexts.pop_back();
+            if (!aContexts.empty())
+                xShape = aContexts.back().nextShape();
         }
     }
 
@@ -208,7 +195,7 @@ uno::Reference< css::container::XIndexAccess > SAL_CALL SdUnoSearchReplaceShape:
     uno::Reference< drawing::XShapes >  xShapes;
     uno::Reference< drawing::XShape >  xShape;
 
-    SearchContext_impl* pContext = nullptr;
+    std::vector<SearchContext_impl> aContexts;
     if(mpPage)
     {
         uno::Reference< drawing::XDrawPage >  xPage( mpPage );
@@ -216,8 +203,8 @@ uno::Reference< css::container::XIndexAccess > SAL_CALL SdUnoSearchReplaceShape:
 
         if( xShapes.is() && xShapes->getCount() > 0 )
         {
-            pContext = new SearchContext_impl( xShapes );
-            xShape = pContext->firstShape();
+            aContexts.push_back(SearchContext_impl(xShapes));
+            xShape = aContexts.back().firstShape();
         }
         else
         {
@@ -257,34 +244,24 @@ uno::Reference< css::container::XIndexAccess > SAL_CALL SdUnoSearchReplaceShape:
 
         if( xGroupShape.is() && xGroupShape->getCount() > 0 )
         {
-            pContext = new SearchContext_impl( xGroupShape, pContext );
-            xShape = pContext->firstShape();
+            aContexts.push_back(SearchContext_impl(xGroupShape));
+            xShape = aContexts.back().firstShape();
         }
         else
         {
-            if( pContext )
-                xShape = pContext->nextShape();
+            if (!aContexts.empty())
+                xShape = aContexts.back().nextShape();
             else
                 xShape = nullptr;
         }
 
         // test parent contexts for next shape if none
         // is found in the current context
-        while( pContext && !xShape.is() )
+        while (!aContexts.empty() && !xShape.is())
         {
-            if( pContext->getParent() )
-            {
-                SearchContext_impl* pOldContext = pContext;
-                pContext = pContext->getParent();
-                delete pOldContext;
-                xShape = pContext->nextShape();
-            }
-            else
-            {
-                delete pContext;
-                pContext = nullptr;
-                xShape = nullptr;
-            }
+            aContexts.pop_back();
+            if (!aContexts.empty())
+                xShape = aContexts.back().nextShape();
         }
     }
 
commit 8d11d68c25baaab08f30d4e0a24753ac43ab90b0
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jul 26 12:39:28 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Jul 27 09:30:59 2018 +0200

    Related: rhbz#1602589 silence leaked_storage
    
    Change-Id: I21cc4af40429fa3ef4284d6c0ea592b05bf36620
    Reviewed-on: https://gerrit.libreoffice.org/58121
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
index 3df800e908d4..c24579c5ccc1 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -4033,8 +4033,9 @@ bool SwEntryBrowseBox::SaveModified()
         pController = m_xCheckController.get();
         bVal = static_cast< ::svt::CheckBoxCellController*>(pController)->GetCheckBox().IsChecked();
     }
-    AutoMarkEntry* pEntry = (nRow >= m_Entries.size()) ? new AutoMarkEntry
-                                                       : m_Entries[nRow].get();
+    const bool bAddEntry = nRow >= m_Entries.size();
+    std::unique_ptr<AutoMarkEntry> xNewEntry(bAddEntry ? new AutoMarkEntry : nullptr);
+    AutoMarkEntry* pEntry = bAddEntry ? xNewEntry.get() : m_Entries[nRow].get();
     switch(nCol)
     {
         case  ITEM_SEARCH       : pEntry->sSearch = sNew; break;
@@ -4045,9 +4046,9 @@ bool SwEntryBrowseBox::SaveModified()
         case  ITEM_CASE         : pEntry->bCase = bVal; break;
         case  ITEM_WORDONLY     : pEntry->bWord = bVal; break;
     }
-    if (nRow >= m_Entries.size())
+    if (bAddEntry)
     {
-        m_Entries.push_back(std::unique_ptr<AutoMarkEntry>(pEntry));
+        m_Entries.push_back(std::move(xNewEntry));
         RowInserted(nRow, 1, true, true);
         if(nCol < ITEM_WORDONLY)
         {
commit 2d6d7171cdf3c50c71e4af271e4ce689ce7482ef
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jul 26 12:10:40 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Jul 27 09:28:29 2018 +0200

    Related: rhbz#1602589 silence leaked_storage
    
    Change-Id: Ib489ebf55d3a18d2af6f34b3f6128231d6d7758c
    Reviewed-on: https://gerrit.libreoffice.org/58090
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sal/osl/unx/profile.cxx b/sal/osl/unx/profile.cxx
index e1992da2416e..d103c4573d0a 100644
--- a/sal/osl/unx/profile.cxx
+++ b/sal/osl/unx/profile.cxx
@@ -181,6 +181,7 @@ static oslProfile osl_psz_openProfile(const sal_Char *pszProfileName, oslProfile
     if (pProfile->m_pFile == nullptr)
         closeFileImpl(pFile,pProfile->m_Flags);
 
+    // coverity[leaked_storage] - pFile is not leaked
     return pProfile;
 }
 
diff --git a/soltools/cpp/_unix.c b/soltools/cpp/_unix.c
index 7d15d57ed45a..2ee9215524a2 100644
--- a/soltools/cpp/_unix.c
+++ b/soltools/cpp/_unix.c
@@ -204,6 +204,7 @@ void
             error(FATAL, "Can't open output file %s", argv[optind + 1]);
 
         dup2(fdo, 1);
+        // coverity[leaked_handle] - on purpose
     }
     includelist[NINCLUDE - 1].always = 0;
     includelist[NINCLUDE - 1].file = dp;
diff --git a/soltools/mkdepend/parse.c b/soltools/mkdepend/parse.c
index 8aa05547bbe7..23aa67849b49 100644
--- a/soltools/mkdepend/parse.c
+++ b/soltools/mkdepend/parse.c
@@ -158,6 +158,7 @@ int find_includes(struct filepointer *filep, struct inclist *file, struct inclis
             break;
         }
     }
+    // coverity[leaked_storage] - on purpose
     return -1;
 }
 
commit 7a937660201d48d5e94971aebd81ece98f529f57
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jul 26 12:00:36 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Jul 27 09:27:44 2018 +0200

    Related: rhbz#1602589 silence coverity copy_paste_error
    
    Change-Id: Idca4bfaaa9f127eae87ae879e2131aed747ce4b3
    Reviewed-on: https://gerrit.libreoffice.org/58089
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx
index b7e62c52e3df..5a9de437077e 100644
--- a/sc/source/core/tool/compiler.cxx
+++ b/sc/source/core/tool/compiler.cxx
@@ -5707,6 +5707,7 @@ bool ScCompiler::HandleTableRef()
                     default:
                         ;   // nothing
                 }
+                // coverity[copy_paste_error] - this is correct, aStart in both aDBRange uses
                 if (aColRange.aStart.Row() != aDBRange.aStart.Row() || aColRange.aEnd.Row() != aDBRange.aStart.Row())
                     aRange = ScRange( ScAddress::INITIALIZE_INVALID);
                 else
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 4f0ccf24f0b3..1d215f1a2908 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -178,6 +178,7 @@ ScPositionHelper::getNearestByIndex(index_type nIndex) const
     }
 
     auto posLB = std::prev(posUB);
+    // coverity[copy_paste_error] - posUB is correct
     if (posUB == mData.end())
     {
         return *posLB;
@@ -208,6 +209,7 @@ ScPositionHelper::getNearestByPosition(long nPos) const
     }
 
     auto posLB = std::prev(posUB);
+    // coverity[copy_paste_error] - posUB is correct
     if (posUB == mData.end())
     {
         return *posLB;
diff --git a/sd/source/ui/animations/CustomAnimationPane.cxx b/sd/source/ui/animations/CustomAnimationPane.cxx
index eea562a53d7f..50bf2231a20b 100644
--- a/sd/source/ui/animations/CustomAnimationPane.cxx
+++ b/sd/source/ui/animations/CustomAnimationPane.cxx
@@ -2343,6 +2343,7 @@ void CustomAnimationPane::moveSelection( bool bUp )
             CustomAnimationEffectPtr pEffect = (*aIter++);
 
             EffectSequence::iterator aUpEffectPos( pSequence->find( pEffect ) );
+            // coverity[copy_paste_error] - this is correct, checking if it exists
             if( aUpEffectPos != rEffectSequence.end() )
             {
                 EffectSequence::iterator aInsertPos( rEffectSequence.erase( aUpEffectPos ) );
@@ -2373,6 +2374,7 @@ void CustomAnimationPane::moveSelection( bool bUp )
             CustomAnimationEffectPtr pEffect = (*aIter++);
 
             EffectSequence::iterator aDownEffectPos( pSequence->find( pEffect ) );
+            // coverity[copy_paste_error] - this is correct, checking if it exists
             if( aDownEffectPos != rEffectSequence.end() )
             {
                 EffectSequence::iterator aInsertPos( rEffectSequence.erase( aDownEffectPos ) );
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 3071fb1371f4..b7b5546acafc 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -6287,6 +6287,7 @@ void PDFWriterImpl::drawRelief( SalLayout& rLayout, const OUString& rText, bool
         aTextLineColor = COL_WHITE;
     if( aOverlineColor == COL_BLACK )
         aOverlineColor = COL_WHITE;
+    // coverity[copy_paste_error] - aReliefColor depending on aTextColor is correct
     if( aTextColor == COL_WHITE )
         aReliefColor = COL_BLACK;
 
commit e41b7bc4cc2376b8fafeab0ef8fed388b0b9d7ae
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Jul 26 13:45:33 2018 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Jul 27 09:26:52 2018 +0200

    ScDPObject is only needed in endFastElement
    
    Change-Id: I8e1a7897777111c225e42ebcf81e67face6b29b9
    Reviewed-on: https://gerrit.libreoffice.org/58114
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/source/filter/xml/xmldpimp.cxx b/sc/source/filter/xml/xmldpimp.cxx
index ecfae1ab28a2..f1c1e96bf309 100644
--- a/sc/source/filter/xml/xmldpimp.cxx
+++ b/sc/source/filter/xml/xmldpimp.cxx
@@ -96,7 +96,6 @@ ScXMLDataPilotTableContext::ScXMLDataPilotTableContext( ScXMLImport& rImport,
                                       const rtl::Reference<sax_fastparser::FastAttributeList>& rAttrList ) :
     ScXMLImportContext( rImport ),
     pDoc(GetScImport().GetDocument()),
-    pDPObject(new ScDPObject(pDoc)),
     pDPSave(new ScDPSaveData()),
     pDPDimSaveData(nullptr),
     sDataPilotTableName(),
@@ -320,7 +319,7 @@ ScDPOutputGeometry::FieldType toFieldType(sheet::DataPilotFieldOrientation nOrie
 
 }
 
-void ScXMLDataPilotTableContext::SetButtons()
+void ScXMLDataPilotTableContext::SetButtons(ScDPObject* pDPObject)
 {
     ScDPOutputGeometry aGeometry(aTargetRangeAddress, bShowFilter);
     aGeometry.setColumnFieldCount(mnColFieldCount);
@@ -452,6 +451,7 @@ void SAL_CALL ScXMLDataPilotTableContext::endFastElement( sal_Int32 /*nElement*/
     if (!bTargetRangeAddress)
         return;
 
+    ScDPObject* pDPObject(new ScDPObject(pDoc));
     pDPObject->SetName(sDataPilotTableName);
     pDPObject->SetTag(sApplicationData);
     pDPObject->SetOutRange(aTargetRangeAddress);
@@ -539,7 +539,7 @@ void SAL_CALL ScXMLDataPilotTableContext::endFastElement( sal_Int32 /*nElement*/
 
     pDPCollection->InsertNewTable(pDPObject);
 
-    SetButtons();
+    SetButtons(pDPObject);
 }
 
 void ScXMLDataPilotTableContext::SetGrandTotal(
diff --git a/sc/source/filter/xml/xmldpimp.hxx b/sc/source/filter/xml/xmldpimp.hxx
index 536a90d06557..b99dd73d38eb 100644
--- a/sc/source/filter/xml/xmldpimp.hxx
+++ b/sc/source/filter/xml/xmldpimp.hxx
@@ -71,7 +71,6 @@ class ScXMLDataPilotTableContext : public ScXMLImportContext
         GrandTotalItem();
     };
     ScDocument*     pDoc;
-    ScDPObject*     pDPObject;
     std::unique_ptr<ScDPSaveData> pDPSave;
     std::unique_ptr<ScDPDimensionSaveData> pDPDimSaveData;
     GrandTotalItem  maRowGrandTotal;
@@ -139,7 +138,7 @@ public:
     void AddDimension(ScDPSaveDimension* pDim);
     void AddGroupDim(const ScDPSaveNumGroupDimension& aNumGroupDim);
     void AddGroupDim(const ScDPSaveGroupDimension& aGroupDim);
-    void SetButtons();
+    void SetButtons(ScDPObject* pDPObject);
     void SetSelectedPage( const OUString& rDimName, const OUString& rSelected );
 };
 


More information about the Libreoffice-commits mailing list