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

Miklos Vajna vmiklos at collabora.co.uk
Tue Feb 13 12:36:50 UTC 2018


 sw/source/core/layout/anchoredobject.cxx |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit d34dcde1d0ccee2d78eea08185f12949f53ceae3
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Feb 13 11:44:36 2018 +0100

    sw: work around what seems to be a gcc-4.8 compiler bug
    
            Thread 1 "soffice.bin" received signal SIGSEGV, Segmentation fault.
            (anonymous namespace)::print_type<15> (ctx=..., info=0x7fffffff7f90, unknown_name=...) at ../../../../../libstdc++-v3/src/c++11/debug.cc:641
            641     ../../../../../libstdc++-v3/src/c++11/debug.cc: No such file or directory.
            (gdb) up
            #1  0x00007ffff6abb008 in (anonymous namespace)::print_description (ctx=..., inst=...) at ../../../../../libstdc++-v3/src/c++11/debug.cc:817
            817     in ../../../../../libstdc++-v3/src/c++11/debug.cc
            (gdb)
            #2  0x00007ffff6abc7aa in (anonymous namespace)::print_description (param=..., ctx=...) at ../../../../../libstdc++-v3/src/c++11/debug.cc:835
            835     in ../../../../../libstdc++-v3/src/c++11/debug.cc
            (gdb)
            #3  __gnu_debug::_Error_formatter::_M_error (this=0x7fffffff7af0) at ../../../../../libstdc++-v3/src/c++11/debug.cc:1061
            1061    in ../../../../../libstdc++-v3/src/c++11/debug.cc
            (gdb)
            #4  0x00007fffca2b6313 in __gnu_debug::operator!=<__gnu_cxx::__normal_iterator<SwAnchoredObject* const*, std::__cxx1998::vector<SwAnchoredObject*, std::allocator<SwAnchoredObject*> > >, std::__debug::vector<SwAnchoredObject*, std::allocator<SwAnchoredObject*> > > (__lhs=0x0, __rhs=invalid iterator) at /usr/include/c++/4.8/debug/safe_iterator.h:535
            535           _GLIBCXX_DEBUG_VERIFY(! __lhs._M_singular() && ! __rhs._M_singular(),
            (gdb)
            #5  0x00007fffca7f3de2 in SwAnchoredObject::UpdateObjInSortedList (this=0x1fa6fd8) at /git/libreoffice/master/sw/source/core/layout/anchoredobject.cxx:629
            629                     for (SwAnchoredObject* pAnchoredObj : *pObjs)
    
    Given that valgrind doesn't point out anything and the old and the new code is
    meant to be the same, my only guess is that the baseline gcc has some codegen
    bug. This happens reasonably frequently, current bugdoc was a DOCX file
    with 4 shapes anchored to the same paragraph, affecting only dbgutil
    builds, it seems.
    
    Change-Id: I2316e25eea87f2aa5736576d5168e113480f80e4
    Reviewed-on: https://gerrit.libreoffice.org/49631
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/source/core/layout/anchoredobject.cxx b/sw/source/core/layout/anchoredobject.cxx
index 1d1d807a0ec0..13d67c902663 100644
--- a/sw/source/core/layout/anchoredobject.cxx
+++ b/sw/source/core/layout/anchoredobject.cxx
@@ -626,8 +626,9 @@ void SwAnchoredObject::UpdateObjInSortedList()
             {
                 const SwSortedObjs* pObjs = GetAnchorFrame()->GetDrawObjs();
                 // determine start index
-                for (SwAnchoredObject* pAnchoredObj : *pObjs)
+                for (auto it = pObjs->begin(); it != pObjs->end(); ++it)
                 {
+                    SwAnchoredObject* pAnchoredObj = *it;
                     if ( pAnchoredObj->ConsiderObjWrapInfluenceOnObjPos() )
                         pAnchoredObj->InvalidateObjPosForConsiderWrapInfluence();
                     else


More information about the Libreoffice-commits mailing list