[Libreoffice-commits] core.git: connectivity/source

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Fri Mar 20 18:16:53 UTC 2020


 connectivity/source/inc/TSortIndex.hxx |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

New commits:
commit 81164d233eef91f5f76e79361688fbb67dc096ff
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Fri Mar 20 16:02:19 2020 +0100
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Fri Mar 20 19:16:26 2020 +0100

    MSVC hack to avoid multiply defined symbols
    
    ...as reported (at least with clang-cl and --disable-pch) now, apparently after
    e5230535877e30c3b874495e8794faa3a42d8017 "simplify ORefVector code":
    
    > [build LNK] Library/filelo.dll
    > idbtools.lib(dbtoolslo.dll) : error LNK2005: "public: long const & __cdecl std::vector<long,class std::allocator<long> >::operator[](unsigned __int64)const " (??A?$vector at JV?$allocator at J@std@@@std@@QEBAAEBJ_K at Z) already defined in fanalyzer.o
    > idbtools.lib(dbtoolslo.dll) : error LNK2005: "public: unsigned __int64 __cdecl std::vector<long,class std::allocator<long> >::size(void)const " (?size@?$vector at JV?$allocator at J@std@@@std@@QEBA_KXZ) already defined in fanalyzer.o
    >    Creating library C:/lo-clang/core/workdir/LinkTarget/Library/ifile.lib and object C:/lo-clang/core/workdir/LinkTarget/Library/ifile.exp
    > C:\lo-clang\core\instdir\program\filelo.dll : fatal error LNK1169: one or more multiply defined symbols found
    
    (The fix strategy is the same as in e.g.
    177f5c2e505b7978fc232a891577a448e49b290d "Proper fix for multiply defined
    SfxEnumItem<sal_uInt16> with MSVC".)
    
    Change-Id: Ie30fb21471e5cbe492486e3f0b76d50f67686253
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90803
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/connectivity/source/inc/TSortIndex.hxx b/connectivity/source/inc/TSortIndex.hxx
index 8d12cdd11d81..c0354316efd9 100644
--- a/connectivity/source/inc/TSortIndex.hxx
+++ b/connectivity/source/inc/TSortIndex.hxx
@@ -89,17 +89,19 @@ namespace connectivity
 
     };
 
+    // MSVC hack to avoid multiply defined std::vector-related symbols:
+    class OKeySet_Base: public ORefVector<sal_Int32> {};
+
     /**
         The class OKeySet is a refcountable vector which also has a state.
         This state gives information about if the keyset is fixed.
     */
-    class OOO_DLLPUBLIC_DBTOOLS OKeySet : public ORefVector<sal_Int32>
+    class OOO_DLLPUBLIC_DBTOOLS OKeySet : public OKeySet_Base
     {
         bool m_bFrozen;
     public:
         OKeySet()
-            : ORefVector<sal_Int32>()
-            , m_bFrozen(false){}
+            : m_bFrozen(false){}
 
         bool    isFrozen() const   { return m_bFrozen; }
         void    setFrozen()        { m_bFrozen = true; }


More information about the Libreoffice-commits mailing list