Files
libreoffice/forms/source/component/FormattedFieldWrapper.cxx

377 lines
15 KiB
C++
Raw Normal View History

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
re-base on ALv2 code. Includes: Patch contributed by Christian Lippka impress212: #i113063# patch: dubios self assign in svx/source/dialog/framelink.cxx http://svn.apache.org/viewvc?view=revision&revision=1167619 Patches contributed by Mathias Bauer gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 cws mba34issues01: #i117712#: fix several resource errors introduced by IAccessible2 implementation http://svn.apache.org/viewvc?view=revision&revision=1172343 cws mba34issues01: #i117719#: use correct resource ID http://svn.apache.org/viewvc?view=revision&revision=1172351 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 Patches contributed by Armin Le-Grand #118804# corrected GraphicExporter behaviour on shortcut when pixel graphic is requested http://svn.apache.org/viewvc?view=revision&revision=1240195 fix for #118525#: Using primitives for chart sub-geometry visualisation http://svn.apache.org/viewvc?view=revision&revision=1226879 #118485# - Styles for OLEs are not saved. http://svn.apache.org/viewvc?view=revision&revision=1182166 #118524: apply patch, followup fixes to 118485 http://svn.apache.org/viewvc?view=revision&revision=1186077 13f79535-47bb-0310-9956-ffa450edef68 Patch contributed by Regina Henschel linecap: Reintegrating finished LineCap feature http://svn.apache.org/viewvc?view=revision&revision=1232507 Patch contributed by Wang Lei (leiw) #i118760# split the first table cell vertically, then undo&redo, the Presentation app will crash http://svn.apache.org/viewvc?view=revision&revision=1301361 cleanup globlmn hacks, undo dependent fixmes.
2012-11-21 22:06:52 +00:00
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
2000-09-18 15:33:13 +00:00
#include "FormattedFieldWrapper.hxx"
#include "Edit.hxx"
#include "FormattedField.hxx"
#include <tools/debug.hxx>
#include "EditBase.hxx"
#include "services.hxx"
2000-10-19 10:52:20 +00:00
#include <connectivity/dbtools.hxx>
2000-09-18 15:33:13 +00:00
#include <vcl/svapp.hxx>
#include <comphelper/processfactory.hxx>
2000-09-18 15:33:13 +00:00
//.........................................................................
namespace frm
{
2000-11-23 07:48:15 +00:00
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::sdb;
using namespace ::com::sun::star::sdbc;
using namespace ::com::sun::star::sdbcx;
using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::container;
using namespace ::com::sun::star::form;
using namespace ::com::sun::star::awt;
using namespace ::com::sun::star::io;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::util;
2000-09-18 15:33:13 +00:00
//==================================================================
// OFormattedFieldWrapper
//==================================================================
2001-05-31 12:59:50 +00:00
DBG_NAME(OFormattedFieldWrapper)
Reference<XInterface> SAL_CALL OFormattedFieldWrapper_CreateInstance_ForceFormatted(const Reference<XMultiServiceFactory>& _rxFactory)
2000-09-18 15:33:13 +00:00
{
return OFormattedFieldWrapper::createFormattedFieldWrapper( comphelper::getComponentContext(_rxFactory), true);
2000-09-18 15:33:13 +00:00
}
2000-11-23 07:48:15 +00:00
InterfaceRef SAL_CALL OFormattedFieldWrapper_CreateInstance(const Reference<XMultiServiceFactory>& _rxFactory)
2000-09-18 15:33:13 +00:00
{
return OFormattedFieldWrapper::createFormattedFieldWrapper( comphelper::getComponentContext(_rxFactory), false);
2000-09-18 15:33:13 +00:00
}
OFormattedFieldWrapper::OFormattedFieldWrapper(const Reference<XComponentContext>& _rxFactory)
:m_xContext(_rxFactory)
2000-09-18 15:33:13 +00:00
{
2001-05-31 12:59:50 +00:00
DBG_CTOR(OFormattedFieldWrapper, NULL);
}
InterfaceRef OFormattedFieldWrapper::createFormattedFieldWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext>& _rxFactory, bool bActAsFormatted)
{
OFormattedFieldWrapper *pRef = new OFormattedFieldWrapper(_rxFactory);
2001-05-31 12:59:50 +00:00
if (bActAsFormatted)
2000-09-18 15:33:13 +00:00
{
// instantiate an FormattedModel
InterfaceRef xFormattedModel;
// (instantiate it directly ..., as the OFormattedModel isn't
// registered for any service names anymore)
OFormattedModel* pModel = new OFormattedModel(pRef->m_xContext);
query_interface(static_cast<XWeak*>(pModel), xFormattedModel);
pRef->m_xAggregate = Reference<XAggregation> (xFormattedModel, UNO_QUERY);
OSL_ENSURE(pRef->m_xAggregate.is(), "the OFormattedModel didn't have an XAggregation interface !");
// _before_ setting the delegator, give it to the member references
query_interface(xFormattedModel, pRef->m_xFormattedPart);
pRef->m_pEditPart = rtl::Reference< OEditModel >(new OEditModel(pRef->m_xContext));
}
increment(pRef->m_refCount);
if (pRef->m_xAggregate.is())
{ // has to be in it's own block because of the temporary variable created by *this
pRef->m_xAggregate->setDelegator(static_cast<XWeak*>(pRef));
2000-09-18 15:33:13 +00:00
}
InterfaceRef xRef(*pRef);
decrement(pRef->m_refCount);
return xRef;
2000-09-18 15:33:13 +00:00
}
Reference< XCloneable > SAL_CALL OFormattedFieldWrapper::createClone() throw (RuntimeException)
{
ensureAggregate();
rtl::Reference< OFormattedFieldWrapper > xRef(new OFormattedFieldWrapper(m_xContext));
Reference< XCloneable > xCloneAccess;
query_aggregation( m_xAggregate, xCloneAccess );
// clone the aggregate
if ( xCloneAccess.is() )
{
Reference< XCloneable > xClone = xCloneAccess->createClone();
xRef->m_xAggregate = Reference< XAggregation >(xClone, UNO_QUERY);
OSL_ENSURE(xRef->m_xAggregate.is(), "invalid aggregate cloned !");
query_interface( Reference< XInterface >(xClone.get() ), xRef->m_xFormattedPart);
if ( m_pEditPart.is() )
{
xRef->m_pEditPart = rtl::Reference< OEditModel >( new OEditModel(m_pEditPart.get(), m_xContext));
}
}
else
{ // the clone source does not yet have an aggregate -> we don't yet need one, too
}
if ( xRef->m_xAggregate.is() )
{ // has to be in it's own block because of the temporary variable created by *this
xRef->m_xAggregate->setDelegator(static_cast< XWeak* >(xRef.get()));
}
return xRef.get();
}
2000-09-18 15:33:13 +00:00
OFormattedFieldWrapper::~OFormattedFieldWrapper()
{
// release the aggregated object (if any)
if (m_xAggregate.is())
m_xAggregate->setDelegator(InterfaceRef ());
2001-05-31 12:59:50 +00:00
DBG_DTOR(OFormattedFieldWrapper, NULL);
2000-09-18 15:33:13 +00:00
}
//------------------------------------------------------------------
2000-11-23 07:48:15 +00:00
Any SAL_CALL OFormattedFieldWrapper::queryAggregation(const Type& _rType) throw (RuntimeException)
2000-09-18 15:33:13 +00:00
{
2000-11-23 07:48:15 +00:00
Any aReturn;
2000-09-18 15:33:13 +00:00
2000-11-23 07:48:15 +00:00
if (_rType.equals( ::getCppuType( static_cast< Reference< XTypeProvider >* >(NULL) ) ) )
2000-09-18 15:33:13 +00:00
{ // a XTypeProvider interface needs a working aggregate - we don't want to give the type provider
// of our base class (OFormattedFieldWrapper_Base) to the caller as it supplies nearly nothing
2000-09-18 15:33:13 +00:00
ensureAggregate();
if (m_xAggregate.is())
aReturn = m_xAggregate->queryAggregation(_rType);
}
if (!aReturn.hasValue())
2000-11-23 07:48:15 +00:00
{
aReturn = OFormattedFieldWrapper_Base::queryAggregation(_rType);
if ((_rType.equals( ::getCppuType( static_cast< Reference< XServiceInfo >* >(NULL) ) ) ) && aReturn.hasValue())
{ // somebody requested an XServiceInfo interface and our base class provided it
// check our aggregate if it has one, too
ensureAggregate();
}
2000-09-18 15:33:13 +00:00
2000-11-23 07:48:15 +00:00
if (!aReturn.hasValue())
{
aReturn = ::cppu::queryInterface( _rType,
static_cast< XPersistObject* >( this ),
static_cast< XCloneable* >( this )
);
2000-11-23 07:48:15 +00:00
if (!aReturn.hasValue())
{
// somebody requests an interface other than the basics (XInterface) and other than
// the two we can supply without an aggregate. So ensure
// the aggregate exists.
2000-11-23 07:48:15 +00:00
ensureAggregate();
if (m_xAggregate.is())
aReturn = m_xAggregate->queryAggregation(_rType);
}
}
2000-09-18 15:33:13 +00:00
}
return aReturn;
}
//------------------------------------------------------------------
OUString SAL_CALL OFormattedFieldWrapper::getServiceName() throw(RuntimeException)
2000-09-18 15:33:13 +00:00
{
// return the old compatibility name for an EditModel
return OUString(FRM_COMPONENT_EDIT);
2000-09-18 15:33:13 +00:00
}
//------------------------------------------------------------------
OUString SAL_CALL OFormattedFieldWrapper::getImplementationName( ) throw (RuntimeException)
{
return OUString("com.sun.star.comp.forms.OFormattedFieldWrapper");
}
//------------------------------------------------------------------
sal_Bool SAL_CALL OFormattedFieldWrapper::supportsService( const OUString& _rServiceName ) throw (RuntimeException)
{
DBG_ASSERT(m_xAggregate.is(), "OFormattedFieldWrapper::supportsService: should never have made it 'til here without an aggregate!");
Reference< XServiceInfo > xSI;
m_xAggregate->queryAggregation(::getCppuType(static_cast< Reference< XServiceInfo >* >(NULL))) >>= xSI;
return xSI->supportsService(_rServiceName);
}
//------------------------------------------------------------------
Sequence< OUString > SAL_CALL OFormattedFieldWrapper::getSupportedServiceNames( ) throw (RuntimeException)
{
DBG_ASSERT(m_xAggregate.is(), "OFormattedFieldWrapper::getSupportedServiceNames: should never have made it 'til here without an aggregate!");
Reference< XServiceInfo > xSI;
m_xAggregate->queryAggregation(::getCppuType(static_cast< Reference< XServiceInfo >* >(NULL))) >>= xSI;
return xSI->getSupportedServiceNames();
}
2000-09-18 15:33:13 +00:00
//------------------------------------------------------------------
2000-11-23 07:48:15 +00:00
void SAL_CALL OFormattedFieldWrapper::write(const Reference<XObjectOutputStream>& _rxOutStream) throw( IOException, RuntimeException )
2000-09-18 15:33:13 +00:00
{
// can't write myself
ensureAggregate();
// if we act as real edit field, we can simple forward this write request
if (!m_xFormattedPart.is())
{
2000-11-23 07:48:15 +00:00
Reference<XPersistObject> xAggregatePersistence;
2000-09-18 15:33:13 +00:00
query_aggregation(m_xAggregate, xAggregatePersistence);
DBG_ASSERT(xAggregatePersistence.is(), "OFormattedFieldWrapper::write : don't know how to handle this : can't write !");
2000-11-23 07:48:15 +00:00
// oops ... We gave an XPersistObject interface to the caller but now we aren't an XPersistObject ...
2000-09-18 15:33:13 +00:00
if (xAggregatePersistence.is())
xAggregatePersistence->write(_rxOutStream);
return;
}
// else we have to write an edit part first
OSL_ENSURE(m_pEditPart.is(), "OFormattedFieldWrapper::write : formatted part without edit part ?");
if ( !m_pEditPart.is() )
throw RuntimeException( OUString(), *this );
2000-09-18 15:33:13 +00:00
// for this we transfer the current props of the formatted part to the edit part
2000-11-23 07:48:15 +00:00
Reference<XPropertySet> xFormatProps(m_xFormattedPart, UNO_QUERY);
Reference<XPropertySet> xEditProps;
query_interface(static_cast<XWeak*>(m_pEditPart.get()), xEditProps);
2000-09-18 15:33:13 +00:00
Locale aAppLanguage = Application::GetSettings().GetUILanguageTag().getLocale();
2000-10-19 10:52:20 +00:00
dbtools::TransferFormComponentProperties(xFormatProps, xEditProps, aAppLanguage);
2000-09-18 15:33:13 +00:00
// then write the edit part, after switching to "fake mode"
m_pEditPart->enableFormattedWriteFake();
m_pEditPart->write(_rxOutStream);
m_pEditPart->disableFormattedWriteFake();
2000-09-18 15:33:13 +00:00
// and finally write the formatted part we're really interested in
m_xFormattedPart->write(_rxOutStream);
}
//------------------------------------------------------------------
2000-11-23 07:48:15 +00:00
void SAL_CALL OFormattedFieldWrapper::read(const Reference<XObjectInputStream>& _rxInStream) throw( IOException, RuntimeException )
2000-09-18 15:33:13 +00:00
{
Ensure SolarMutex is locked at DBG_TESTSOLARMUTEX checkpoints f218110744cbb2ec79796d886042546e47334cca "Get rid of GlobalEditData::GetStdRefDevice()" causes DBG_TESTSOLARMUTEX failures like 13 <signal handler called> 14 0x000000396e035ba5 in raise () from /lib64/libc.so.6 15 0x000000396e037358 in abort () from /lib64/libc.so.6 16 0x000000396e02e972 in __assert_fail_base () from /lib64/libc.so.6 17 0x000000396e02ea22 in __assert_fail () from /lib64/libc.so.6 18 0x00002aaaaee6e42f in ImplDbgTestSolarMutex () at vcl/source/app/dbggui.cxx:1750 19 0x00002aaaae21cf1b in DbgFunc (nAction=15, pParam=0x0) at tools/source/debug/debug.cxx:1118 20 0x00002aaaaf12bbb5 in DbgTestSolarMutex () at include/tools/debug.hxx:295 21 0x00002aaaaf151d4f in OutputDevice::ImplGetGraphics (this=0x2aab342127c0) at vcl/source/gdi/outdev.cxx:554 22 0x00002aaaaf1562e9 in OutputDevice::DrawRect (this=0x2aab342127c0, rRect=Rectangle = {...}) at vcl/source/gdi/outdev.cxx:1665 23 0x00002aaaaf14dc53 in OutputDevice::ImplDrawColorWallpaper (this=0x2aab342127c0, nX=0, nY=0, nWidth=1, nHeight=1, rWallpaper=...) at vcl/source/gdi/outdev6.cxx:775 24 0x00002aaaaf14f68c in OutputDevice::ImplDrawWallpaper (this=0x2aab342127c0, nX=0, nY=0, nWidth=1, nHeight=1, rWallpaper=...) at vcl/source/gdi/outdev6.cxx:1080 25 0x00002aaaaf14fa4c in OutputDevice::Erase (this=0x2aab342127c0) at vcl/source/gdi/outdev6.cxx:1141 26 0x00002aaaaf2a8802 in VirtualDevice::ImplInitVirDev (this=0x2aab342127c0, pOutDev=0x2d93230, nDX=1, nDY=1, nBitCount=0, pData=0x0) at vcl/source/gdi/virdev.cxx:113 27 0x00002aaaaf2a8a6e in VirtualDevice::VirtualDevice (this=0x2aab342127c0, nBitCount=0) at vcl/source/gdi/virdev.cxx:135 28 0x00002aaacee3e6a1 in ImpEditEngine::SetRefDevice (this=0x2aab34212040, pRef=0x0) at editeng/source/editeng/impedit2.cxx:193 29 0x00002aaacee3ddf7 in ImpEditEngine::ImpEditEngine (this=0x2aab34212040, pEE=0x2aab34211fe0, pItemPool=0x2aab34210780) at editeng/source/editeng/impedit2.cxx:154 30 0x00002aaacedeec95 in EditEngine::EditEngine (this=0x2aab34211fe0, pItemPool=0x2aab34210780) at editeng/source/editeng/editeng.cxx:104 31 0x00002aaaf63acf10 in frm::RichTextEngine::RichTextEngine (this=0x2aab34211fe0, _pPool=0x2aab34210780) at forms/source/richtext/richtextengine.cxx:102 32 0x00002aaaf63ac8ea in frm::RichTextEngine::Create () at forms/source/richtext/richtextengine.cxx:52 33 0x00002aaaf63bd661 in frm::ORichTextModel::ORichTextModel (this=0x2aab394e5728, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260) at forms/source/richtext/richtextmodel.cxx:68 34 0x00002aaaf63c00e3 in frm::ORichTextModel::Create (_rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260) at forms/source/richtext/richtextmodel.cxx:242 35 0x00002aaaab81054e in cppu::OSingleFactoryHelper::createInstanceEveryTime (this=0x2aaaf5d3d070, xContext=uno::Reference to (cppu::ComponentContext *) 0x2aaabc54ef58) at cppuhelper/source/factory.cxx:171 36 0x00002aaaab810765 in cppu::OSingleFactoryHelper::createInstanceWithContext (this=0x2aaaf5d3d070, xContext=uno::Reference to (cppu::ComponentContext *) 0x2aaabc54ef58) at cppuhelper/source/factory.cxx:203 37 0x00002aaaab8111bf in cppu::OFactoryComponentHelper::createInstanceWithContext (this=0x2aaaf5d3d008, xContext=uno::Reference to (cppu::ComponentContext *) 0x2aaabc54ef58) at cppuhelper/source/factory.cxx:432 38 0x00002aaaab865ee6 in cppuhelper::ServiceManager::createInstanceWithContext (this=0x2aaabc565208, aServiceSpecifier="com.sun.star.form.component.RichTextControl", Context=uno::Reference to (cppu::ComponentContext *) 0x2aaabc54ef58) at cppuhelper/source/servicemanager.cxx:796 39 0x00002aaaab865990 in cppuhelper::ServiceManager::createInstance (this=0x2aaabc565208, aServiceSpecifier="com.sun.star.form.component.RichTextControl") at cppuhelper/source/servicemanager.cxx:745 40 0x00002aaaf62db43d in frm::OControlModel::OControlModel (this=0x2aaaf5a5e408, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260, _rUnoControlModelTypeName="com.sun.star.form.component.RichTextControl", rDefault="com.sun.star.form.control.TextField", _bSetDelegator=0 '\000') at forms/source/component/FormComponent.cxx:598 41 0x00002aaaf62def21 in frm::OBoundControlModel::OBoundControlModel (this=0x2aaaf5a5e408, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260, _rUnoControlModelTypeName="com.sun.star.form.component.RichTextControl", _rDefault="com.sun.star.form.control.TextField", _bCommitable=1 '\001', _bSupportExternalBinding=1 '\001', _bSupportsValidation=1 '\001') at forms/source/component/FormComponent.cxx:1257 42 0x00002aaaf62a212c in frm::OEditBaseModel::OEditBaseModel (this=0x2aaaf5a5e408, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260, rUnoControlModelName="com.sun.star.form.component.RichTextControl", rDefault="com.sun.star.form.control.TextField", _bSupportExternalBinding=1 '\001', _bSupportsValidation=1 '\001') at forms/source/component/EditBase.cxx:56 43 0x00002aaaf62a54e2 in frm::OEditModel::OEditModel (this=0x2aaaf5a5e408, _rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2aaabc565260) at forms/source/component/Edit.cxx:294 44 0x00002aaaf62d6a40 in frm::OFormattedFieldWrapper::read (this=0x2aaadbee2940, _rxInStream=uno::Reference to (io_stm::OObjectInputStream *) 0x2aab393d0070) at forms/source/component/FormattedFieldWrapper.cxx:303 45 0x00002aaabcba47e6 in gcc3::callVirtualMethod(void*, unsigned int, void*, _typelib_TypeDescriptionReference*, bool, unsigned long*, unsigned int, unsigned long*, unsigned int, double*, unsigned int) () from solver/unxlngx6/installation/opt/ure/lib/libgcc3_uno.so 46 0x00002aaabcba36c0 in cpp_call (pThis=0x2aaad40cee90, aVtableSlot=..., pReturnTypeRef=0x2474360, nParams=1, pParams=0x2aaad0009000, pUnoReturn=0x0, pUnoArgs=0x2aab3420ff10, ppUnoExc=0x2aab26a4e6a8) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:237 47 0x00002aaabcba4203 in bridges::cpp_uno::shared::unoInterfaceProxyDispatch (pUnoI=0x2aaad40cee90, pMemberDescr=0x2aaad0012980, pReturn=0x0, pArgs=0x2aab3420ff10, ppException=0x2aab26a4e6a8) at bridges/source/cpp_uno/gcc3_linux_x86-64/uno2cpp.cxx:430 48 0x00002aaabe26515f in binaryurp::IncomingRequest::execute_throw (this=0x2aaad000b9a0, returnValue=0x2aab26a4eb10, outArguments=0x2aab26a4ea80) at binaryurp/source/incomingrequest.cxx:245 49 0x00002aaabe26402f in binaryurp::IncomingRequest::execute (this=0x2aaad000b9a0) at binaryurp/source/incomingrequest.cxx:74 50 0x00002aaabe27f3f1 in binaryurp::(anonymous namespace)::request (pThreadSpecificData=0x2aaad000b9a0) at binaryurp/source/reader.cxx:87 51 0x00002aaaab539286 in cppu_threadpool::JobQueue::enter (this=0x2aaad00098b0, nDisposeId=46913122473968, bReturnWhenNoJob=1 '\001') at cppu/source/threadpool/jobqueue.cxx:115 52 0x00002aaaab53cb7d in cppu_threadpool::ORequestThread::run (this=0x2aaad00017f0) at cppu/source/threadpool/thread.cxx:172 53 0x00002aaaab53d363 in osl::threadFunc (param=0x2aaad0001800) at include/osl/thread.hxx:187 54 0x00002aaaaaac85fb in osl_thread_start_Impl (pData=0x2aaad0007050) at sal/osl/unx/thread.c:251 55 0x000000396e407d15 in start_thread () from /lib64/libpthread.so.0 56 0x000000396e0f248d in clone () from /lib64/libc.so.6 (encountered with JunitTest_forms_unoapi) or 13 <signal handler called> 14 0x000000396e035ba5 in raise () from /lib64/libc.so.6 15 0x000000396e037358 in abort () from /lib64/libc.so.6 16 0x000000396e02e972 in __assert_fail_base () from /lib64/libc.so.6 17 0x000000396e02ea22 in __assert_fail () from /lib64/libc.so.6 18 0x00002aaaaee6e42f in ImplDbgTestSolarMutex () at vcl/source/app/dbggui.cxx:1750 19 0x00002aaaae21cf1b in DbgFunc (nAction=15, pParam=0x0) at tools/source/debug/debug.cxx:1118 20 0x00002aaaaf12bbb5 in DbgTestSolarMutex () at include/tools/debug.hxx:295 21 0x00002aaaaf152433 in OutputDevice::ImplReleaseGraphics (this=0x2aab20eef8b0, bRelease=1 '\001') at vcl/source/gdi/outdev.cxx:704 22 0x00002aaaaf2a9047 in VirtualDevice::~VirtualDevice (this=0x2aab20eef8b0, __in_chrg=<optimized out>) at vcl/source/gdi/virdev.cxx:187 23 0x00002aaaaf2a919c in VirtualDevice::~VirtualDevice (this=0x2aab20eef8b0, __in_chrg=<optimized out>) at vcl/source/gdi/virdev.cxx:202 24 0x00002aaacecbb264 in ImpEditEngine::~ImpEditEngine (this=0x2aab20eef130, __in_chrg=<optimized out>) at editeng/source/editeng/impedit2.cxx:182 25 0x00002aaacecbb614 in ImpEditEngine::~ImpEditEngine (this=0x2aab20eef130, __in_chrg=<optimized out>) at editeng/source/editeng/impedit2.cxx:184 26 0x00002aaacec6bd51 in EditEngine::~EditEngine (this=0x2aab20eef0d0, __in_chrg=<optimized out>) at editeng/source/editeng/editeng.cxx:110 27 0x00002aab34256039 in frm::RichTextEngine::~RichTextEngine (this=0x2aab20eef0d0, __in_chrg=<optimized out>) at forms/source/richtext/richtextengine.cxx:108 28 0x00002aab3425609c in frm::RichTextEngine::~RichTextEngine (this=0x2aab20eef0d0, __in_chrg=<optimized out>) at forms/source/richtext/richtextengine.cxx:111 29 0x00002aab3426b3fe in std::auto_ptr<frm::RichTextEngine>::reset (this=0x2aaabd4cb210, __p=0x0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/backward/auto_ptr.h:244 30 0x00002aab34268a64 in frm::ORichTextModel::~ORichTextModel (this=0x2aaabd4cae08, __in_chrg=<optimized out>) at forms/source/richtext/richtextmodel.cxx:219 31 0x00002aab34268d60 in frm::ORichTextModel::~ORichTextModel (this=0x2aaabd4cae08, __in_chrg=<optimized out>) at forms/source/richtext/richtextmodel.cxx:225 32 0x00002aaaab8bd763 in cppu::OWeakObject::release (this=0x2aaabd4cae08) at cppuhelper/source/weak.cxx:204 33 0x00002aaaab8bdc20 in cppu::OWeakAggObject::release (this=0x2aaabd4cae08) at cppuhelper/source/weak.cxx:274 34 0x00002aaaab805212 in cppu::OComponentHelper::release (this=0x2aaabd4cae08) at cppuhelper/source/component.cxx:113 35 0x00002aab340edb6c in frm::OControlModel::release (this=0x2aaabd4cae08) at forms/source/inc/FormComponent.hxx:408 36 0x00002aab3426ae18 in frm::ORichTextModel::release (this=0x2aaabd4cae08) at forms/source/richtext/richtextmodel.hxx:106 37 0x00002aaaab1d81cf in com::sun::star::uno::Reference<com::sun::star::beans::XPropertyState>::~Reference (this=0x2aaacfee10d0, __in_chrg=<optimized out>) at include/com/sun/star/uno/Reference.hxx:108 38 0x00002aaaab1d2e69 in comphelper::OPropertySetAggregationHelper::~OPropertySetAggregationHelper (this=0x2aaacfee1068, __in_chrg=<optimized out>) at comphelper/source/property/propagg.cxx:451 39 0x00002aab34184f55 in frm::OControlModel::~OControlModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/FormComponent.cxx:669 40 0x00002aab34189425 in frm::OBoundControlModel::~OBoundControlModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/FormComponent.cxx:1316 41 0x00002aab3414bac5 in frm::OEditBaseModel::~OEditBaseModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/EditBase.cxx:75 42 0x00002aab3414ee79 in frm::OEditModel::~OEditModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/Edit.cxx:318 43 0x00002aab3414eef8 in frm::OEditModel::~OEditModel (this=0x2aaacfee1008, __in_chrg=<optimized out>) at forms/source/component/Edit.cxx:327 44 0x00002aaaab8bd763 in cppu::OWeakObject::release (this=0x2aaacfee1008) at cppuhelper/source/weak.cxx:204 45 0x00002aaaab8bdc20 in cppu::OWeakAggObject::release (this=0x2aaacfee1008) at cppuhelper/source/weak.cxx:274 46 0x00002aaaab805212 in cppu::OComponentHelper::release (this=0x2aaacfee1008) at cppuhelper/source/component.cxx:113 47 0x00002aab340edb6c in frm::OControlModel::release (this=0x2aaacfee1008) at forms/source/inc/FormComponent.hxx:408 48 0x00002aab340f8a38 in frm::OBoundControlModel::release (this=0x2aaacfee1008) at forms/source/inc/FormComponent.hxx:1025 49 0x00002aaaab7ed45d in com::sun::star::uno::Reference<com::sun::star::uno::XInterface>::~Reference (this=0x7fff8d7a2cd0, __in_chrg=<optimized out>) at include/com/sun/star/uno/Reference.hxx:108 50 0x00002aaaab8051f3 in cppu::OComponentHelper::release (this=0x2aaacfee1008) at cppuhelper/source/component.cxx:107 51 0x00002aab340edb6c in frm::OControlModel::release (this=0x2aaacfee1008) at forms/source/inc/FormComponent.hxx:408 52 0x00002aab340f8a38 in frm::OBoundControlModel::release (this=0x2aaacfee1008) at forms/source/inc/FormComponent.hxx:1025 53 0x00002aaabcba6224 in bridges::cpp_uno::shared::freeUnoInterfaceProxy (pEnv=0x2aaac80009e0, pProxy=0x2aab20ef5470) at bridges/source/cpp_uno/shared/unointerfaceproxy.cxx:43 54 0x00002aaaab56f35c in (anonymous namespace)::s_stub_defenv_revokeInterface (pParam=0x7fff8d7a2f78) at cppu/source/uno/lbenv.cxx:390 55 0x00002aaaab56ad4f in s_environment_invoke_v (pCurrEnv=0x0, pTargetEnv=0x2aaac80009e0, pCallee=0x2aaaab56f008 <(anonymous namespace)::s_stub_defenv_revokeInterface(va_list*)>, pParam=0x7fff8d7a2f78) at cppu/source/uno/EnvStack.cxx:292 56 0x00002aaaab56adf8 in uno_Environment_invoke_v (pTargetEnv=0x2aaac80009e0, pCallee=0x2aaaab56f008 <(anonymous namespace)::s_stub_defenv_revokeInterface(va_list*)>, pParam=0x7fff8d7a2f78) at cppu/source/uno/EnvStack.cxx:311 57 0x00002aaaab56aeb8 in uno_Environment_invoke (pEnv=0x2aaac80009e0, pCallee=0x2aaaab56f008 <(anonymous namespace)::s_stub_defenv_revokeInterface(va_list*)>) at cppu/source/uno/EnvStack.cxx:320 58 0x00002aaaab56f704 in (anonymous namespace)::defenv_revokeInterface (pEnv=0x2aaac80009e0, pInterface=0x2aab20ef5470) at cppu/source/uno/lbenv.cxx:446 59 0x00002aaabcba634a in bridges::cpp_uno::shared::releaseProxy (pUnoI=0x2aab20ef5470) at bridges/source/cpp_uno/shared/unointerfaceproxy.cxx:85 60 0x00002aaabe24dbd3 in com::sun::star::uno::UnoInterfaceReference::~UnoInterfaceReference (this=0x2aaad011eac8, __in_chrg=<optimized out>) at include/uno/dispatcher.hxx:88 61 0x00002aaabe24edd8 in binaryurp::Bridge::SubStub::~SubStub (this=0x2aaad011eac8, __in_chrg=<optimized out>) at binaryurp/source/bridge.cxx:167 62 0x00002aaabe24eea3 in std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub>::~pair (this=0x2aaad011eac0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_pair.h:88 63 0x00002aaabe25a32e in std::_Rb_tree_node<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> >::~_Rb_tree_node (this=0x2aaad011eaa0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:130 64 0x00002aaabe25a34c in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::destroy<std::_Rb_tree_node<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > (this=0x2aaad011eb08, __p=0x2aaad011eaa0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/ext/new_allocator.h:114 65 0x00002aaabe258ad9 in std::_Rb_tree<com::sun::star::uno::TypeDescription, std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub>, std::_Select1st<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> >, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::_M_destroy_node (this=0x2aaad011eb08, __p=0x2aaad011eaa0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:419 66 0x00002aaabe2566d5 in std::_Rb_tree<com::sun::star::uno::TypeDescription, std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub>, std::_Select1st<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> >, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::_M_erase (this=0x2aaad011eb08, __x=0x2aaad011eaa0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1084 67 0x00002aaabe254656 in std::_Rb_tree<com::sun::star::uno::TypeDescription, std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub>, std::_Select1st<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> >, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::~_Rb_tree (this=0x2aaad011eb08, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:646 68 0x00002aaabe2519d4 in std::__cxx1998::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::~map (this=0x2aaad011eb08, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_map.h:90 69 0x00002aaabe251a70 in std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >::~map (this=0x2aaad011eb08, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/debug/map.h:107 70 0x00002aaabe24ef78 in std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >::~pair (this=0x2aaad011eb00, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_pair.h:88 71 0x00002aaabe25a168 in std::_Rb_tree_node<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >::~_Rb_tree_node (this=0x2aaad011eae0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:130 72 0x00002aaabe25a186 in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::destroy<std::_Rb_tree_node<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > > (this=0x7fff8d7a3470, __p=0x2aaad011eae0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/ext/new_allocator.h:114 73 0x00002aaabe2584ef in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_destroy_node (this=0x7fff8d7a3470, __p=0x2aaad011eae0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:419 74 0x00002aaabe255bc1 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad011eae0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1084 75 0x00002aaabe255b9e in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad0012f10) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1082 76 0x00002aaabe255b9e in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad0012a60) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1082 77 0x00002aaabe255b9e in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad002ec50) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1082 78 0x00002aaabe255b9e in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::_M_erase (this=0x7fff8d7a3470, __x=0x2aaad001ca70) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1082 79 0x00002aaabe2537e8 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > >, std::_Select1st<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::~_Rb_tree (this=0x7fff8d7a3470, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:646 80 0x00002aaabe25033a in std::__cxx1998::map<rtl::OUString, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::~map (this=0x7fff8d7a3470, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_map.h:90 81 0x00002aaabe2503d6 in std::__debug::map<rtl::OUString, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, std::__debug::map<com::sun::star::uno::TypeDescription, binaryurp::Bridge::SubStub, std::less<com::sun::star::uno::TypeDescription>, std::allocator<std::pair<com::sun::star::uno::TypeDescription const, binaryurp::Bridge::SubStub> > > > > >::~map (this=0x7fff8d7a3470, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/debug/map.h:107 82 0x00002aaabe2468ec in binaryurp::Bridge::terminate (this=0x2aaabd5aa670, final=true) at binaryurp/source/bridge.cxx:332 83 0x00002aaabe24af19 in binaryurp::Bridge::dispose (this=0x2aaabd5aa670) at binaryurp/source/bridge.cxx:920 84 0x00002aaabddfc85d in desktop::Acceptor::~Acceptor (this=0x2aaabd3ea6d0, __in_chrg=<optimized out>) at desktop/source/offacc/acceptor.cxx:88 85 0x00002aaabddfca52 in desktop::Acceptor::~Acceptor (this=0x2aaabd3ea6d0, __in_chrg=<optimized out>) at desktop/source/offacc/acceptor.cxx:90 86 0x00002aaaab8bd763 in cppu::OWeakObject::release (this=0x2aaabd3ea6d0) at cppuhelper/source/weak.cxx:204 87 0x00002aaabde05f7e in cppu::WeakImplHelper2<com::sun::star::lang::XServiceInfo, com::sun::star::lang::XInitialization>::release (this=0x2aaabd3ea6d0) at include/cppuhelper/implbase2.hxx:106 88 0x00002aaaaad7d4fb in com::sun::star::uno::Reference<com::sun::star::lang::XInitialization>::~Reference (this=0x16790f8, __in_chrg=<optimized out>) at include/com/sun/star/uno/Reference.hxx:108 89 0x00002aaaaad846f8 in std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> >::~pair (this=0x16790f0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_pair.h:88 90 0x00002aaaaad8834e in std::_Rb_tree_node<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > >::~_Rb_tree_node (this=0x16790d0, __in_chrg=<optimized out>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:130 91 0x00002aaaaad8836c in __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::destroy<std::_Rb_tree_node<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > > (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>, __p=0x16790d0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/ext/new_allocator.h:114 92 0x00002aaaaad87fdb in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> >, std::_Select1st<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::_M_destroy_node (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>, __p=0x16790d0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:419 93 0x00002aaaaad878a5 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> >, std::_Select1st<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::_M_erase (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>, __x=0x16790d0) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:1084 94 0x00002aaaaad87625 in std::_Rb_tree<rtl::OUString, std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> >, std::_Select1st<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > >, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::clear (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_tree.h:816 95 0x00002aaaaad865b4 in std::__cxx1998::map<rtl::OUString, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization>, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::clear (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_map.h:716 96 0x00002aaaaad85670 in std::__debug::map<rtl::OUString, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization>, std::less<rtl::OUString>, std::allocator<std::pair<rtl::OUString const, com::sun::star::uno::Reference<com::sun::star::lang::XInitialization> > > >::clear (this=0x2aaaab039660 <rtl::Static<desktop::AcceptorMap, desktop::(anonymous namespace)::acceptorMap>::get()::instance>) at /usr/lib/gcc/x86_64-redhat-linux/4.7.2/../../../../include/c++/4.7.2/debug/map.h:351 97 0x00002aaaaad83453 in desktop::Desktop::DeregisterServices (this=0x7fff8d7a43e0) at desktop/source/app/appinit.cxx:255 98 0x00002aaaaad643e3 in desktop::Desktop::doShutdown (this=0x7fff8d7a43e0) at desktop/source/app/app.cxx:1804 99 0x00002aaaaad63680 in desktop::Desktop::Main (this=0x7fff8d7a43e0) at desktop/source/app/app.cxx:1753 100 0x00002aaaaee9b0dd in ImplSVMain () at vcl/source/app/svmain.cxx:162 101 0x00002aaaaee9b1c6 in SVMain () at vcl/source/app/svmain.cxx:198 102 0x00002aaaaada6616 in soffice_main () at desktop/source/app/sofficemain.cxx:82 103 0x0000000000400968 in sal_main () at desktop/source/app/main.c:48 104 0x0000000000400949 in main (argc=9, argv=0x7fff8d7a45c8) at desktop/source/app/main.c:47 (encountered with JunitTest_sc_unoapi), and more, so lock the SolarMutex at the "entrance" to the relevant stack traces. Change-Id: I017acf2886b813adb4d44562c5f1e22dd24aa884
2013-05-22 16:19:33 +02:00
SolarMutexGuard g;
2000-09-18 15:33:13 +00:00
if (m_xAggregate.is())
{ // we alread did a decision if we're an EditModel or a FormattedModel
// if we act as formatted, we have to read the edit part first
if (m_xFormattedPart.is())
{
// two possible cases:
// a) the stuff was written by a version which didn't work with an Edit header (all intermediate
// versions >5.1 && <=568)
// b) it was written by a version using edit headers
// as we can distinguish a) from b) only after we have read the edit part, we need to remember the
// position
2000-11-23 07:48:15 +00:00
Reference<XMarkableStream> xInMarkable(_rxInStream, UNO_QUERY);
2000-09-18 15:33:13 +00:00
DBG_ASSERT(xInMarkable.is(), "OFormattedFieldWrapper::read : can only work with markable streams !");
sal_Int32 nBeforeEditPart = xInMarkable->createMark();
m_pEditPart->read(_rxInStream);
// this only works because an edit model can read the stuff written by a formatted model
// (maybe with some assertions) , but not vice versa
if (!m_pEditPart->lastReadWasFormattedFake())
2000-09-18 15:33:13 +00:00
{ // case a), written with a version without the edit part fake, so seek to the start position, again
xInMarkable->jumpToMark(nBeforeEditPart);
}
xInMarkable->deleteMark(nBeforeEditPart);
}
2000-11-23 07:48:15 +00:00
Reference<XPersistObject> xAggregatePersistence;
2000-09-18 15:33:13 +00:00
query_aggregation(m_xAggregate, xAggregatePersistence);
DBG_ASSERT(xAggregatePersistence.is(), "OFormattedFieldWrapper::read : don't know how to handle this : can't read !");
2000-11-23 07:48:15 +00:00
// oops ... We gave an XPersistObject interface to the caller but now we aren't an XPersistObject ...
2000-09-18 15:33:13 +00:00
if (xAggregatePersistence.is())
xAggregatePersistence->read(_rxInStream);
return;
}
// we have to decide from the data within the stream whether we should
// be an EditModel or a FormattedModel
{
// let an OEditModel do the reading
rtl::Reference< OEditModel > pBasicReader(new OEditModel(m_xContext));
pBasicReader->read(_rxInStream);
// was it really an edit model ?
if (!pBasicReader->lastReadWasFormattedFake())
{
// yes -> all fine
m_xAggregate = Reference< XAggregation >( pBasicReader.get() );
}
else
{ // no -> substitute it with a formatted model
// let the formmatted model do the reading
m_xFormattedPart = Reference< XPersistObject >(new OFormattedModel(m_xContext));
m_xFormattedPart->read(_rxInStream);
m_pEditPart = pBasicReader;
m_xAggregate = Reference< XAggregation >( m_xFormattedPart, UNO_QUERY );
}
}
// do the aggregation
increment(m_refCount);
if (m_xAggregate.is())
{ // has to be in it's own block because of the temporary variable created by *this
m_xAggregate->setDelegator(static_cast<XWeak*>(this));
}
decrement(m_refCount);
2000-09-18 15:33:13 +00:00
}
//------------------------------------------------------------------
void OFormattedFieldWrapper::ensureAggregate()
{
if (m_xAggregate.is())
return;
{
// instantiate an EditModel (the only place where we are allowed to decide that we're an FormattedModel
// is in ::read)
InterfaceRef xEditModel = m_xContext->getServiceManager()->createInstanceWithContext(FRM_SUN_COMPONENT_TEXTFIELD, m_xContext);
2000-09-18 15:33:13 +00:00
if (!xEditModel.is())
{
// arghhh ... instantiate it directly ... it's dirty, but we really need this aggregate
OEditModel* pModel = new OEditModel(m_xContext);
2000-11-23 07:48:15 +00:00
query_interface(static_cast<XWeak*>(pModel), xEditModel);
2000-09-18 15:33:13 +00:00
}
m_xAggregate = Reference<XAggregation> (xEditModel, UNO_QUERY);
DBG_ASSERT(m_xAggregate.is(), "OFormattedFieldWrapper::ensureAggregate : the OEditModel didn't have an XAggregation interface !");
{
Reference< XServiceInfo > xSI(m_xAggregate, UNO_QUERY);
if (!xSI.is())
{
OSL_FAIL("OFormattedFieldWrapper::ensureAggregate: the aggregate has no XServiceInfo!");
m_xAggregate.clear();
}
}
2000-09-18 15:33:13 +00:00
}
increment(m_refCount);
2000-09-18 15:33:13 +00:00
if (m_xAggregate.is())
{ // has to be in it's own block because of the temporary variable created by *this
2000-11-23 07:48:15 +00:00
m_xAggregate->setDelegator(static_cast<XWeak*>(this));
2000-09-18 15:33:13 +00:00
}
decrement(m_refCount);
2000-09-18 15:33:13 +00:00
}
//.........................................................................
}
//.........................................................................
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */