[Libreoffice-commits] core.git: 2 commits - svx/source

Caolán McNamara caolanm at redhat.com
Wed Jun 25 03:01:17 PDT 2014


 svx/source/svdraw/svdundo.cxx  |    3 +++
 svx/source/unodraw/unopage.cxx |   33 ++++++++++++++++++++++++++-------
 2 files changed, 29 insertions(+), 7 deletions(-)

New commits:
commit abb59367a9fc4a4238d0a2e47100047a19e173e7
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Jun 25 10:36:15 2014 +0100

    unlocked solarmutex assertion in SdrObject::getShape
    
    and the usual trouble to determine if there's a good place
    to acquire that solarmutex
    
     Thread 1 (Thread 0x2b46b1f29700 (LWP 12316)):
     #0  0x00000030a9435c39 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
      resultvar = 0
      pid = 12288
      selftid = 12316
     #1  0x00000030a9437348 in __GI_abort () at abort.c:89
      save_stage = 2
      act = {__sigaction_handler = {sa_handler = 0x3a0f3d0, sa_sigaction = 0x3a0f3d0}, sa_mask = {__val = {47582633170688, 47582633154912, 208993838886, 5, 0, 0, 208998001984, 1, 47582633154912, 47582345455112, 208993866117, 43, 208998941072, 9, 47582633152432, 1}}, sa_flags = 1, sa_restorer = 0x30a94a0947}
      sigs = {__val = {32, 0 <repeats 15 times>}}
     #2  0x00002b469bacd369 in CallSystemHandler (Signal=6) at /home/caolan/LibreOffice/core/sal/osl/unx/signal.c:876
      i = 5
      act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 0, sa_restorer = 0x1}
     #3  0x00002b469bacd58d in SignalHandlerFunction (Signal=6) at /home/caolan/LibreOffice/core/sal/osl/unx/signal.c:963
      Info = {Signal = osl_Signal_AccessViolation, UserSignal = 6, UserData = 0x0}
      act = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0, 0, 47582265366112, 0, 47582633156256, 47582633155104, 47582273450152, 47582633156256, 47582633156272, 47582857433088, 47582857433088, 47582633156288, 47582273445749, 47582633156336, 47582633156432, 47582633155168}}, sa_flags = -1669443764, sa_restorer = 0x2b46adf40ad0}
     #4  <signal handler called>
     No locals.
     #5  0x00000030a9435c39 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
      resultvar = 0
      pid = 12288
      selftid = 12316
     #6  0x00000030a9437348 in __GI_abort () at abort.c:89
      save_stage = 2
      act = {__sigaction_handler = {sa_handler = 0x3a0f3d0, sa_sigaction = 0x3a0f3d0}, sa_mask = {__val = {47582633170688, 47582633156704, 208993838886, 206158430213, 0, 18, 208998001984, 1, 47582633156704, 47582345455112, 208993866117, 18, 208998918141, 209001884160, 18, 1}}, sa_flags = -1451513344, sa_restorer = 0x2b46a0d20ad6}
      sigs = {__val = {32, 0 <repeats 15 times>}}
     #7  0x00002b46a0b4444f in SalAbort (rErrorText="", bDumpCore=true) at /home/caolan/LibreOffice/core/vcl/unx/generic/plugadapt/salplug.cxx:277
     No locals.
     #8  0x00002b46a09e9f57 in Application::Abort (rErrorText="") at /home/caolan/LibreOffice/core/vcl/source/app/svapp.cxx:319
      dumpCore = true
      n = 8
     #9  0x00002b469bd6d670 in desktop::Desktop::Exception (this=0x7ffff545a620, nError=768) at /home/caolan/LibreOffice/core/desktop/source/app/app.cxx:1307
      bInException = true
      nOldMode = 2
      rArgs = @0x2b469c040020: {<boost::noncopyable_::noncopyable> = {<No data fields>}, m_cwdUrl = boost::optional "file:///home/caolan/LibreOffice/core/workdir/JunitTest/sfx2_complex/user", m_minimized = false, m_invisible = true, m_norestore = true, m_headless = true, m_quickstart = false, m_noquickstart = true, m_terminateafterinit = false, m_nofirststartwizard = true, m_nologo = true, m_nolockcheck = false, m_nodefault = false, m_help = false, m_writer = false, m_calc = false, m_draw = false, m_impress = false, m_global = false, m_math = false, m_web = false, m_base = false, m_helpwriter = false, m_helpcalc = false, m_helpdraw = false, m_helpbasic = false, m_helpmath = false, m_helpimpress = false, m_helpbase = false, m_version = false, m_splashpipe = false, m_unknown = "", m_bEmpty = false, m_bDocumentArgs = false, m_accept = std::__debug::vector of length 1, capacity 1 = {"pipe,name=oootest98e478a5-c56b-4306-b6e1-4a905bfe4dd8;urp"}, m_unaccept = std::__debug::vector of length 
 0, capacity 0, m_openlist = std::__debug::vector of length 0, capacity 0, m_viewlist = std::__debug::vector of length 0, capacity 0, m_startlist = std::__debug::vector of length 0, capacity 0, m_forceopenlist = std::__debug::vector of length 0, capacity 0, m_forcenewlist = std::__debug::vector of length 0, capacity 0, m_printlist = std::__debug::vector of length 0, capacity 0, m_printtolist = std::__debug::vector of length 0, capacity 0, m_printername = "", m_conversionlist = std::__debug::vector of length 0, capacity 0, m_conversionparams = "", m_conversionout = "", m_infilter = std::__debug::vector of length 0, capacity 0, m_language = "", m_pidfile = ""}
      bAllowRecoveryAndSessionManagement = false
      bRestart = false
     #10 0x00002b46a09f159c in VCLExceptionSignal_impl (pInfo=0x2b46b1f262a0) at /home/caolan/LibreOffice/core/vcl/source/app/svmain.cxx:132
      nOldMode = 2
      aLock = {m_solarMutex = @0x154e3f0}
      pSVData = 0x2b46a120a4e0 <rtl::Static<ImplSVData, (anonymous namespace)::private_aImplSVData>::get()::instance>
      nVCLException = 768
      bIn = true
     #11 0x00002b469bacd1e3 in CallSignalHandler (pInfo=0x2b46b1f262a0) at /home/caolan/LibreOffice/core/sal/osl/unx/signal.c:834
      pHandler = 0x2542c90
      Action = osl_Signal_ActCallNextHdl
     #12 0x00002b469bacd570 in SignalHandlerFunction (Signal=6) at /home/caolan/LibreOffice/core/sal/osl/unx/signal.c:960
      Info = {Signal = osl_Signal_AccessViolation, UserSignal = 6, UserData = 0x0}
      act = {__sigaction_handler = {sa_handler = 0x2b46b1f267a0, sa_sigaction = 0x2b46b1f267a0}, sa_mask = {__val = {0, 0, 47579647705089, 0, 47582633157376, 0, 0, 0, 0, 0, 47579647705089, 0, 208998490563, 538, 18446696491076394257, 8589934627}}, sa_flags = 8, sa_restorer = 0x38}
     #13 <signal handler called>
     No locals.
     #14 0x00000030a9435c39 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
      resultvar = 0
      pid = 12288
      selftid = 12316
     #15 0x00000030a9437348 in __GI_abort () at abort.c:89
      save_stage = 2
      act = {__sigaction_handler = {sa_handler = 0x7ffff545e0b0, sa_sigaction = 0x7ffff545e0b0}, sa_mask = {__val = {208999518067, 47582345455056, 794, 4294967295, 208998171891, 4, 47582633158592, 8589934592, 47582633158512, 39036522, 208998489237, 0, 0, 21474836480, 208999517887, 47582857433088}}, sa_flags = -1453867640, sa_restorer = 0x2b46a0cc6608}
      sigs = {__val = {32, 0 <repeats 15 times>}}
     #16 0x00000030a942eb96 in __assert_fail_base (fmt=0x30a957bd88 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion at entry=0x2b46a0cc6608 "ImplGetSVData()->mpDefInst->CheckYieldMutex()", file=file at entry=0x2b46a0cc65d0 "/home/caolan/LibreOffice/core/vcl/source/app/dbggui.cxx", line=line at entry=794, function=function at entry=0x2b46a0cc74b0 <ImplDbgTestSolarMutex()::__PRETTY_FUNCTION__> "void ImplDbgTestSolarMutex()") at assert.c:92
      str = 0x3a10c40 "\270\207{\251\060"
      total = 4096
     #17 0x00000030a942ec42 in __GI___assert_fail (assertion=0x2b46a0cc6608 "ImplGetSVData()->mpDefInst->CheckYieldMutex()", file=0x2b46a0cc65d0 "/home/caolan/LibreOffice/core/vcl/source/app/dbggui.cxx", line=794, function=0x2b46a0cc74b0 <ImplDbgTestSolarMutex()::__PRETTY_FUNCTION__> "void ImplDbgTestSolarMutex()") at assert.c:101
     No locals.
     #18 0x00002b46a09c64e8 in ImplDbgTestSolarMutex () at /home/caolan/LibreOffice/core/vcl/source/app/dbggui.cxx:794
      __PRETTY_FUNCTION__ = "void ImplDbgTestSolarMutex()"
     #19 0x00002b469f86ebcc in DbgFunc (nAction=3, pParam=0x0) at /home/caolan/LibreOffice/core/tools/source/debug/debug.cxx:299
      pDebugData = 0x2b469fb37be0 <aDebugData>
     #20 0x00002b46b6af3a2c in SdrObject::getSvxShape (this=0x2a2d810) at /home/caolan/LibreOffice/core/svx/source/svdraw/svdobj.cxx:3018
      xShape = uno::Reference to (com::sun::star::uno::XInterface *) 0x2b46b1f27a30
     #21 0x00002b46b6ae9237 in SdrObject::Free (_rpObject=@0x2d1c1a8: 0x0) at /home/caolan/LibreOffice/core/svx/source/svdraw/svdobj.cxx:520
      pObject = 0x2a2d810
      pShape = 0x19
     #22 0x00002b46b6bb4898 in SdrUndoObjList::~SdrUndoObjList (this=0x2d1c190, __in_chrg=<optimized out>) at /home/caolan/LibreOffice/core/svx/source/svdraw/svdundo.cxx:772
     No locals.
     #23 0x00002b46b6bb4c3c in SdrUndoRemoveObj::~SdrUndoRemoveObj (this=0x2d1c190, __in_chrg=<optimized out>) at /home/caolan/LibreOffice/core/svx/source/svdraw/svdundo.cxx:835
     No locals.
     #24 0x00002b46b2715458 in SdrUndoDelObj::~SdrUndoDelObj (this=0x2d1c190, __in_chrg=<optimized out>) at /home/caolan/LibreOffice/core/include/svx/svdundo.hxx:302
     No locals.
     #25 0x00002b46b2715a2d in sd::UndoDeleteObject::~UndoDeleteObject (this=0x2d1c190, __in_chrg=<optimized out>) at /home/caolan/LibreOffice/core/sd/inc/undo/undoobjects.hxx:61
     No locals.
     #26 0x00002b46b2715a66 in sd::UndoDeleteObject::~UndoDeleteObject (this=0x2d1c190, __in_chrg=<optimized out>) at /home/caolan/LibreOffice/core/sd/inc/undo/undoobjects.hxx:61
     No locals.
     #27 0x00002b469e487a9d in SfxUndoArray::~SfxUndoArray (this=0x2d1c080, __in_chrg=<optimized out>) at /home/caolan/LibreOffice/core/svl/source/undo/undo.cxx:1392
      pAction = 0x2d1c190
     #28 0x00002b469e49539c in SfxListUndoAction::~SfxListUndoAction (this=0x2d1c070, __in_chrg=<optimized out>) at /home/caolan/LibreOffice/core/include/svl/undo.hxx:152
     No locals.
     #29 0x00002b469e4953e0 in SfxListUndoAction::~SfxListUndoAction (this=0x2d1c070, __in_chrg=<optimized out>) at /home/caolan/LibreOffice/core/include/svl/undo.hxx:152
     No locals.
     #30 0x00002b469e482c05 in svl::undo::impl::UndoManagerGuard::~UndoManagerGuard (this=0x2b46b1f27ce0, __in_chrg=<optimized out>) at /home/caolan/LibreOffice/core/svl/source/undo/undo.cxx:316
      pAction = 0x2d1c070
      aListenersCopy = std::__debug::vector of length 1, capacity 1 = {0x3a112c0}
     #31 0x00002b469e4836f7 in SfxUndoManager::Clear (this=0x2892af0) at /home/caolan/LibreOffice/core/svl/source/undo/undo.cxx:458
      aGuard = {m_rManagerData = @0x2892b40, m_aGuard = {<osl::ClearableGuard<osl::Mutex>> = {pT = 0x0}, pResetT = 0x2892b40}, m_aUndoActionsCleanup = std::__debug::list = {[0] = 0x2d19640}, m_notifiers = std::__debug::list = {[0] = {<std::unary_function<SfxUndoListener*, void>> = {<No data fields>}, m_notificationMethod = &virtual SfxUndoListener::cleared(), m_altNotificationMethod = NULL, m_sActionComment = ""}}}
     #32 0x00002b46b6a08a1f in SdrUndoManager::Clear (this=0x2892af0) at /home/caolan/LibreOffice/core/svx/source/svdraw/sdrundomanager.cxx:99
     No locals.
     #33 0x00002b46a2b5dd7d in framework::UndoManagerHelper_Impl::impl_clear (this=0x3a112c0) at /home/caolan/LibreOffice/core/framework/source/fwe/helper/undomanagerhelper.cxx:713
      aNotificationGuard = {<comphelper::ScopeGuard> = {<boost::noncopyable_::noncopyable> = {<No data fields>}, m_func = {<boost::function_base> = {vtable = 0x2b46a2df9571 <void boost::function0<void>::assign_to<boost::_bi::bind_t<void, void (*)(bool&), boost::_bi::list1<boost::reference_wrapper<bool> > > >(boost::_bi::bind_t<void, void (*)(bool&), boost::_bi::list1<boost::reference_wrapper<bool> > >)::stored_vtable+1>, functor = {obj_ptr = 0x2b46a2b6026d <comphelper::FlagGuard::ResetFlag(bool&)>, type = {type = 0x2b46a2b6026d <comphelper::FlagGuard::ResetFlag(bool&)>, const_qualified = 217, volatile_qualified = 18}, func_ptr = 0x2b46a2b6026d <comphelper::FlagGuard::ResetFlag(bool&)>, bound_memfunc_ptr = {memfunc_ptr = &virtual table offset 47582377542252, this adjustment 60887769, obj_ptr = 0x0}, obj_ref = {obj_ptr = 0x2b46a2b6026d <comphelper::FlagGuard::ResetFlag(bool&)>, is_const_qualified = 217, is_volatile_qualified = 18}, data = 109 'm'}}, static args = <optimized out>, stati
 c arity = <optimized out>}, m_excHandling = comphelper::ScopeGuard::IGNORE_EXCEPTIONS}, <No data fields>}
      aGuard = {pT = 0x3a112c8}
      rUndoManager = @0x2892af0: {_vptr.IUndoManager = 0x2b46b31ca9f0 <vtable for sd::UndoManager+16>, static CurrentLevel = true, static TopLevel = false}
      aEvent = {Source = uno::Reference to (com::sun::star::uno::XInterface *) 0x5}
     #34 0x00002b46a2b68407 in boost::_mfi::mf0<void, framework::UndoManagerHelper_Impl>::operator() (this=0x3a074f8, p=0x3a112c0) at /home/caolan/LibreOffice/core/workdir/UnpackedTarball/boost/boost/bind/mem_fn_template.hpp:49
     No locals.
     #35 0x00002b46a2b67788 in boost::_bi::list1<boost::_bi::value<framework::UndoManagerHelper_Impl*> >::operator()<boost::_mfi::mf0<void, framework::UndoManagerHelper_Impl>, boost::_bi::list0> (this=0x3a07508, f=..., a=...) at /home/caolan/LibreOffice/core/workdir/UnpackedTarball/boost/boost/bind/bind.hpp:253
     No locals.
     #36 0x00002b46a2b65f39 in boost::_bi::bind_t<void, boost::_mfi::mf0<void, framework::UndoManagerHelper_Impl>, boost::_bi::list1<boost::_bi::value<framework::UndoManagerHelper_Impl*> > >::operator() (this=0x3a074f8) at /home/caolan/LibreOffice/core/workdir/UnpackedTarball/boost/boost/bind/bind_template.hpp:20
      a = {<No data fields>}
     #37 0x00002b46a2b643d9 in boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void, boost::_mfi::mf0<void, framework::UndoManagerHelper_Impl>, boost::_bi::list1<boost::_bi::value<framework::UndoManagerHelper_Impl*> > >, void>::invoke (function_obj_ptr=...) at /home/caolan/LibreOffice/core/workdir/UnpackedTarball/boost/boost/function/function_template.hpp:153
      f = 0x3a074f8
     #38 0x00002b46a2b6125c in boost::function0<void>::operator() (this=0x3a074f0) at /home/caolan/LibreOffice/core/workdir/UnpackedTarball/boost/boost/function/function_template.hpp:767
     No locals.
     #39 0x00002b46a2b60449 in framework::UndoManagerRequest::execute (this=0x3a074e0) at /home/caolan/LibreOffice/core/framework/source/fwe/helper/undomanagerhelper.cxx:151
     No locals.
     #40 0x00002b46a2b5cb38 in framework::UndoManagerHelper_Impl::impl_processRequest (this=0x3a112c0, i_request=..., i_instanceLock=...) at /home/caolan/LibreOffice/core/framework/source/fwe/helper/undomanagerhelper.cxx:512
      pRequest = rtl::Reference to 0x3a074e0
     #41 0x00002b46a2b5c63c in framework::UndoManagerHelper_Impl::clear (this=0x3a112c0, i_instanceLock=...) at /home/caolan/LibreOffice/core/framework/source/fwe/helper/undomanagerhelper.cxx:421
     No locals.
     #42 0x00002b46a2b5f215 in framework::UndoManagerHelper::clear (this=0x39f6fc8, i_instanceLock=...) at /home/caolan/LibreOffice/core/framework/source/fwe/helper/undomanagerhelper.cxx:1038
     No locals.
     #43 0x00002b469dbf39e9 in sfx2::DocumentUndoManager::clear (this=0x2b46bd44b978) at /home/caolan/LibreOffice/core/sfx2/source/doc/docundomanager.cxx:367
      aGuard = {<framework::IMutexGuard> = {_vptr.IMutexGuard = 0x2b469e2b4f10 <vtable for sfx2::UndoManagerGuard+16>}, <boost::noncopyable_::noncopyable> = {<No data fields>}, m_guard = {m_aGuard = {_vptr.SolarMutexResettableGuard = 0x2b469e2b51d0 <vtable for SolarMutexResettableGuard+16>, m_bCleared = true, m_solarMutex = @0x154e3f0}}, m_solarMutexFacade = {<framework::IMutex> = {_vptr.IMutex = 0x2b469e2b4f50 <vtable for sfx2::SolarMutexFacade+16>}, <No data fields>}}
     #44 0x00002b46adc89784 in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, unsigned int, double*, unsigned int) () from /home/caolan/LibreOffice/core/instdir/ure/lib/libgcc3_uno.so
     No symbol table info available.
     #45 0x00002b46adc88796 in cpp_call (pThis=0x2d56e50, aVtableSlot=..., pReturnTypeRef=0x15514d0, nParams=0, pParams=0x0, pUnoReturn=0x0, pUnoArgs=0x0, ppUnoExc=0x2b46b1f28698) at /home/caolan/LibreOffice/core/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:236
      nGPR = 1
      ppTempParamTypeDescr = 0x2b46b1f28270
      nTempIndices = 0
      pStackStart = 0x2b46b1f28280
      pFPR = {0, 0, 2.3362526676252203e-310, 2.3508944385848569e-310, 2.336252667649726e-310, 2.3508944385856474e-310, 2.3508944385820902e-310, 2.7985561956169231e-316}
      pReturnTypeDescr = 0x15514d0
      bSimpleReturn = true
      pStack = 0x2b46b1f28280
      pGPR = {47582823102880, 47582633166960, 47582633165472, 60859488, 28755264288, 18446744069414584320}
      nFPR = 0
      pCppReturn = 0x0
      pAdjustedThisPtr = 0x2b46bd44b9a0
      pCppArgs = 0x2b46b1f28270
      pTempIndices = 0x2b46b1f28270
     #46 0x00002b46adc89171 in bridges::cpp_uno::shared::unoInterfaceProxyDispatch (pUnoI=0x2d56e50, pMemberDescr=0x3a0f3d0, pReturn=0x0, pArgs=0x0, ppException=0x2b46b1f28698) at /home/caolan/LibreOffice/core/bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:434
      nMemberPos = 20
      aVtableSlot = {offset = 0, index = 18}
      pThis = 0x2d56e50
      pTypeDescr = 0x2d42bd0
     #47 0x00002b46af85f2ba in binaryurp::IncomingRequest::execute_throw (this=0x3604fc0, returnValue=0x2b46b1f28af0, outArguments=0x2b46b1f28a60) at /home/caolan/LibreOffice/core/binaryurp/source/incomingrequest.cxx:243
      exc = <error reading variable: Cannot access memory at address 0x8>
      pexc = 0x2b46b1f286a0
      retType = {_pTypeDescr = 0x15514d0}
      nSize = 0
      retBuf = std::__debug::vector of length 0, capacity 0
      outBufs = empty std::__debug::list
      args = std::__debug::vector of length 0, capacity 0
      isExc = false
     #48 0x00002b46af85e171 in binaryurp::IncomingRequest::execute (this=0x3604fc0) at /home/caolan/LibreOffice/core/binaryurp/source/incomingrequest.cxx:74
      resetCc = true
      oldCc = {m_pUnoI = 0x0}
      ret = {data_ = empty _uno_Any}
      outArgs = std::__debug::vector of length 0, capacity 0
      isExc = false
     #49 0x00002b46af87c50f in binaryurp::(anonymous namespace)::request (pThreadSpecificData=0x3604fc0) at /home/caolan/LibreOffice/core/binaryurp/source/reader.cxx:85
      __PRETTY_FUNCTION__ = "void binaryurp::{anonymous}::request(void*)"
     #50 0x00002b469c538413 in cppu_threadpool::JobQueue::enter (this=0x3a10f50, nDisposeId=40866352, bReturnWhenNoJob=true) at /home/caolan/LibreOffice/core/cppu/source/threadpool/jobqueue.cxx:115
      guard = {pT = 0x2b46b1f299c0}
      job = {pThreadSpecificData = 0x3604fc0, doRequest = 0x2b46af87c4b5 <binaryurp::(anonymous namespace)::request(void*)>}
      pReturn = 0x0
     #51 0x00002b469c53bcb2 in cppu_threadpool::ORequestThread::run (this=0x26f9230) at /home/caolan/LibreOffice/core/cppu/source/threadpool/thread.cxx:171
     No locals.
     #52 0x00002b469c53c4e7 in osl::threadFunc (param=0x26f9240) at /home/caolan/LibreOffice/core/include/osl/thread.hxx:187
      pObj = 0x26f9240
     #53 0x00002b469baca78f in osl_thread_start_Impl (pData=0x26f9790) at /home/caolan/LibreOffice/core/sal/osl/unx/thread.c:237
      terminate = 0
      pImpl = 0x26f9790
     #54 0x00000030a9c07f33 in start_thread (arg=0x2b46b1f29700) at pthread_create.c:309
      __res = <optimized out>
      pd = 0x2b46b1f29700
      now = <optimized out>
      unwind_buf = {cancel_jmp_buf = {{jmp_buf = {47582633170688, 952760598160027738, 0, 0, 47582633171392, 47582633170688, 6608330218674401370, 961994848098529370}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
      not_first_call = <optimized out>
      pagesize_m1 = <optimized out>
      sp = <optimized out>
      freesize = <optimized out>
     #55 0x00000030a94f4ded in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
     No locals.
    
     E
     Time: 102.445
     There were 13 failures:
     1) checkImpressUndo(complex.sfx2.UndoManager)
     com.sun.star.lang.DisposedException
      at com.sun.star.lib.uno.environments.remote.JobQueue.removeJob(JobQueue.java:202)
      at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:322)
      at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:295)
      at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:80)
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:627)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:141)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:123)
      at com.sun.proxy.$Proxy60.clear(Unknown Source)
      at complex.sfx2.UndoManager.impl_checkUndo(UndoManager.java:618)
      at complex.sfx2.UndoManager.checkImpressUndo(UndoManager.java:140)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     Caused by: java.io.EOFException
      at java.io.DataInputStream.readInt(DataInputStream.java:392)
      at com.sun.star.lib.uno.protocols.urp.urp.readBlock(urp.java:350)
      at com.sun.star.lib.uno.protocols.urp.urp.readMessage(urp.java:87)
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge$MessageDispatcher.run(java_remote_bridge.java:96)
     2) checkImpressUndo(complex.sfx2.UndoManager)
     com.sun.star.lang.DisposedException: java_remote_bridge com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge at 1c23cae6 is disposed
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.checkDisposed(java_remote_bridge.java:690)
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:611)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:141)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:118)
      at com.sun.proxy.$Proxy21.queryInterface(Unknown Source)
      at com.sun.star.uno.UnoRuntime.queryInterface(UnoRuntime.java:144)
      at com.sun.star.uno.UnoRuntime.queryInterface(UnoRuntime.java:172)
      at org.openoffice.test.tools.OfficeDocument.close(OfficeDocument.java:124)
      at complex.sfx2.undo.DocumentTestBase.closeDocument(DocumentTestBase.java:40)
      at complex.sfx2.undo.DrawingOrPresentationDocumentTest.closeDocument(DrawingOrPresentationDocumentTest.java:41)
      at complex.sfx2.UndoManager.afterTest(UndoManager.java:290)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     3) checkChartUndo(complex.sfx2.UndoManager)
     com.sun.star.lang.DisposedException: java_remote_bridge com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge at 1c23cae6 is disposed
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.checkDisposed(java_remote_bridge.java:690)
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:611)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:141)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:123)
      at com.sun.proxy.$Proxy9.getServiceManager(Unknown Source)
      at complex.sfx2.UndoManager.getORB(UndoManager.java:1191)
      at complex.sfx2.UndoManager.beforeTest(UndoManager.java:106)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     4) checkChartUndo(complex.sfx2.UndoManager)
     java.lang.NullPointerException
      at complex.sfx2.UndoManager.afterTest(UndoManager.java:295)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     5) checkWriterUndo(complex.sfx2.UndoManager)
     com.sun.star.lang.DisposedException: java_remote_bridge com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge at 1c23cae6 is disposed
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.checkDisposed(java_remote_bridge.java:690)
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:611)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:141)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:123)
      at com.sun.proxy.$Proxy9.getServiceManager(Unknown Source)
      at complex.sfx2.UndoManager.getORB(UndoManager.java:1191)
      at complex.sfx2.UndoManager.beforeTest(UndoManager.java:106)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     6) checkWriterUndo(complex.sfx2.UndoManager)
     java.lang.NullPointerException
      at complex.sfx2.UndoManager.afterTest(UndoManager.java:295)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     7) checkSerialization(complex.sfx2.UndoManager)
     com.sun.star.lang.DisposedException: java_remote_bridge com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge at 1c23cae6 is disposed
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.checkDisposed(java_remote_bridge.java:690)
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:611)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:141)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:123)
      at com.sun.proxy.$Proxy9.getServiceManager(Unknown Source)
      at complex.sfx2.UndoManager.getORB(UndoManager.java:1191)
      at complex.sfx2.UndoManager.beforeTest(UndoManager.java:106)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     8) checkSerialization(complex.sfx2.UndoManager)
     java.lang.NullPointerException
      at complex.sfx2.UndoManager.afterTest(UndoManager.java:295)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     9) checkDrawUndo(complex.sfx2.UndoManager)
     com.sun.star.lang.DisposedException: java_remote_bridge com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge at 1c23cae6 is disposed
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.checkDisposed(java_remote_bridge.java:690)
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:611)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:141)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:123)
      at com.sun.proxy.$Proxy9.getServiceManager(Unknown Source)
      at complex.sfx2.UndoManager.getORB(UndoManager.java:1191)
      at complex.sfx2.UndoManager.beforeTest(UndoManager.java:106)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     10) checkDrawUndo(complex.sfx2.UndoManager)
     java.lang.NullPointerException
      at complex.sfx2.UndoManager.afterTest(UndoManager.java:295)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     11) checkBrokenScripts(complex.sfx2.UndoManager)
     com.sun.star.lang.DisposedException: java_remote_bridge com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge at 1c23cae6 is disposed
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.checkDisposed(java_remote_bridge.java:690)
      at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:611)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:141)
      at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:123)
      at com.sun.proxy.$Proxy9.getServiceManager(Unknown Source)
      at complex.sfx2.UndoManager.getORB(UndoManager.java:1191)
      at complex.sfx2.UndoManager.beforeTest(UndoManager.java:106)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     12) checkBrokenScripts(complex.sfx2.UndoManager)
     java.lang.NullPointerException
      at complex.sfx2.UndoManager.afterTest(UndoManager.java:295)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
      at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
      at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
     13) complex.sfx2.UndoManager
     java.lang.AssertionError: expected:<0> but was:<134>
      at org.junit.Assert.fail(Assert.java:88)
      at org.junit.Assert.failNotEquals(Assert.java:743)
      at org.junit.Assert.assertEquals(Assert.java:118)
      at org.junit.Assert.assertEquals(Assert.java:555)
      at org.junit.Assert.assertEquals(Assert.java:542)
      at org.openoffice.test.OfficeConnection.tearDown(OfficeConnection.java:151)
      at complex.sfx2.UndoManager.tearDownConnection(UndoManager.java:1212)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:606)
      at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
      at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
      at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
      at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:33)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runners.Suite.runChild(Suite.java:127)
      at org.junit.runners.Suite.runChild(Suite.java:26)
      at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
      at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
      at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
      at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
      at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
      at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:138)
      at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
      at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
      at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
      at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
    
     FAILURES!!!
     Tests run: 10,  Failures: 13
    
     to rerun just this failed test without all others, run:
    
         make JunitTest_sfx2_complex
    
     cd into the module dir to run the tests faster
     Or to do interactive debugging (non-Windows), run two shells with:
    
         make debugrun
         make gb_JunitTest_DEBUGRUN=T JunitTest_sfx2_complex
    
     make[1]: *** [/home/caolan/LibreOffice/core/workdir/JunitTest/sfx2_complex/done] Error 1
     make[1]: *** Waiting for unfinished jobs....
     make[1]: Leaving directory `/home/caolan/LibreOffice/core'
     make: *** [build] Error 2
    
    Change-Id: Ia8d226b9e22e83ffa80da0983bc65344378f6293

diff --git a/svx/source/svdraw/svdundo.cxx b/svx/source/svdraw/svdundo.cxx
index 9aa4e00..9da38fb 100644
--- a/svx/source/svdraw/svdundo.cxx
+++ b/svx/source/svdraw/svdundo.cxx
@@ -42,6 +42,7 @@
 #include <svx/svdograf.hxx>
 #include <sdr/contact/viewcontactofgraphic.hxx>
 #include <svx/svdotable.hxx> // #i124389#
+#include <vcl/svapp.hxx>
 
 
 // iterates over all views and unmarks this SdrObject if it is marked
@@ -761,6 +762,8 @@ SdrUndoObjList::SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect)
 
 SdrUndoObjList::~SdrUndoObjList()
 {
+    SolarMutexGuard aGuard;
+
     delete m_pListener;
 
     if (pObj!=NULL && IsOwner())
commit 32c28a6d131284c1602f57a8220d1b736b538288
Author: Maxime de Roucy <mderoucy at linagora.com>
Date:   Tue Jan 7 09:31:11 2014 +0100

    Resolves: #i74651# remove image via should change document state
    
    Now when an image is removed from a Calc document using the API it changes the
    modified state of the document.
    
    Change-Id: I5dad550ec78a12227f3fb04fd934c7d0c5066a9f
    Reviewed-on: https://gerrit.libreoffice.org/7286
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/svx/source/unodraw/unopage.cxx b/svx/source/unodraw/unopage.cxx
index 0ede8d0..3dde9ef 100644
--- a/svx/source/unodraw/unopage.cxx
+++ b/svx/source/unodraw/unopage.cxx
@@ -32,10 +32,13 @@
 #include <svx/svdoole2.hxx>
 #include <svx/svdpage.hxx>
 #include <svx/svdmodel.hxx>
+#include <svx/svdstr.hrc>
 #include <svx/svdview.hxx>
 #include <svx/svdpagv.hxx>
+#include <svx/svdundo.hxx>
 #include <svx/unopage.hxx>
 #include "shapeimpl.hxx"
+#include "svdglob.hxx"
 #include "svx/globl3d.hxx"
 #include <svx/polysc3d.hxx>
 #include <svx/unoprov.hxx>
@@ -285,27 +288,43 @@ void SAL_CALL SvxDrawPage::remove( const Reference< drawing::XShape >& xShape )
 
     SvxShape* pShape = SvxShape::getImplementation( xShape );
 
-    if(pShape)
+    if (pShape)
     {
-        SdrObject*  pObj = pShape->GetSdrObject();
-        if(pObj)
+        SdrObject* pObj = pShape->GetSdrObject();
+        if (pObj)
         {
-            // SdrObject aus der Page loeschen
+            // remove SdrObject from page
             sal_uInt32 nCount = mpPage->GetObjCount();
             for( sal_uInt32 nNum = 0; nNum < nCount; nNum++ )
             {
                 if(mpPage->GetObj(nNum) == pObj)
                 {
+                    const bool bUndoEnabled = mpModel->IsUndoEnabled();
+
+                    if (bUndoEnabled)
+                    {
+                        mpModel->BegUndo(ImpGetResStr(STR_EditDelete),
+                            pObj->TakeObjNameSingul(), SDRREPFUNC_OBJ_DELETE);
+
+                        SdrUndoAction * pAction = mpModel->GetSdrUndoFactory().CreateUndoDeleteObject(*pObj);
+                        mpModel->AddUndo(pAction);
+                    }
+
                     OSL_VERIFY( mpPage->RemoveObject( nNum ) == pObj );
-                    SdrObject::Free( pObj );
+
+                    if (!bUndoEnabled)
+                        SdrObject::Free(pObj);
+
+                    if (bUndoEnabled)
+                        mpModel->EndUndo();
+
                     break;
                 }
             }
         }
     }
 
-    if( mpModel )
-        mpModel->SetChanged();
+    mpModel->SetChanged();
 }
 
 // ::com::sun::star::container::XIndexAccess


More information about the Libreoffice-commits mailing list