2010-10-12 15:57:08 +02:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
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>
|
|
|
|
|
|
|
|
//.........................................................................
|
|
|
|
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)
|
2012-11-21 20:10:24 +00:00
|
|
|
|
2000-11-23 07:48:15 +00:00
|
|
|
InterfaceRef SAL_CALL OFormattedFieldWrapper_CreateInstance_ForceFormatted(const Reference<XMultiServiceFactory>& _rxFactory)
|
2000-09-18 15:33:13 +00:00
|
|
|
{
|
2012-11-21 20:10:24 +00:00
|
|
|
return OFormattedFieldWrapper::createFormattedFieldWrapper(_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
|
|
|
{
|
2012-11-21 20:10:24 +00:00
|
|
|
return OFormattedFieldWrapper::createFormattedFieldWrapper(_rxFactory, false);
|
2000-09-18 15:33:13 +00:00
|
|
|
}
|
|
|
|
|
2012-11-21 20:10:24 +00:00
|
|
|
OFormattedFieldWrapper::OFormattedFieldWrapper(const Reference<XMultiServiceFactory>& _rxFactory)
|
2006-06-19 11:49:58 +00:00
|
|
|
:m_xServiceFactory(_rxFactory)
|
2000-09-18 15:33:13 +00:00
|
|
|
{
|
2001-05-31 12:59:50 +00:00
|
|
|
DBG_CTOR(OFormattedFieldWrapper, NULL);
|
2012-11-21 20:10:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
InterfaceRef OFormattedFieldWrapper::createFormattedFieldWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory>& _rxFactory, bool bActAsFormatted)
|
|
|
|
{
|
|
|
|
OFormattedFieldWrapper *pRef = new OFormattedFieldWrapper(_rxFactory);
|
2001-05-31 12:59:50 +00:00
|
|
|
|
2012-11-21 20:10:24 +00:00
|
|
|
if (bActAsFormatted)
|
2000-09-18 15:33:13 +00:00
|
|
|
{
|
2012-11-21 20:10:24 +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_xServiceFactory);
|
|
|
|
query_interface(static_cast<XWeak*>(pModel), xFormattedModel);
|
|
|
|
|
|
|
|
pRef->m_xAggregate = Reference<XAggregation> (xFormattedModel, UNO_QUERY);
|
2012-11-27 14:35:35 +01:00
|
|
|
OSL_ENSURE(pRef->m_xAggregate.is(), "the OFormattedModel didn't have an XAggregation interface !");
|
2012-11-21 20:10:24 +00:00
|
|
|
|
|
|
|
// _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_xServiceFactory));
|
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
}
|
2012-11-21 20:10:24 +00:00
|
|
|
|
|
|
|
InterfaceRef xRef(*pRef);
|
|
|
|
decrement(pRef->m_refCount);
|
|
|
|
|
|
|
|
return xRef;
|
2000-09-18 15:33:13 +00:00
|
|
|
}
|
|
|
|
|
2012-11-21 20:10:24 +00:00
|
|
|
Reference< XCloneable > SAL_CALL OFormattedFieldWrapper::createClone() throw (RuntimeException)
|
2003-03-25 17:05:07 +00:00
|
|
|
{
|
2012-11-21 20:10:24 +00:00
|
|
|
ensureAggregate();
|
|
|
|
|
|
|
|
rtl::Reference< OFormattedFieldWrapper > xRef(new OFormattedFieldWrapper(m_xServiceFactory));
|
|
|
|
|
2003-03-25 17:05:07 +00:00
|
|
|
Reference< XCloneable > xCloneAccess;
|
2012-11-21 20:10:24 +00:00
|
|
|
query_aggregation( m_xAggregate, xCloneAccess );
|
2003-03-25 17:05:07 +00:00
|
|
|
|
|
|
|
// clone the aggregate
|
|
|
|
if ( xCloneAccess.is() )
|
|
|
|
{
|
2012-11-21 20:10:24 +00:00
|
|
|
Reference< XCloneable > xClone = xCloneAccess->createClone();
|
|
|
|
xRef->m_xAggregate = Reference< XAggregation >(xClone, UNO_QUERY);
|
|
|
|
OSL_ENSURE(xRef->m_xAggregate.is(), "invalid aggregate cloned !");
|
2012-11-21 15:53:11 +00:00
|
|
|
|
2012-11-21 20:10:24 +00:00
|
|
|
query_interface( Reference< XInterface >(xClone.get() ), xRef->m_xFormattedPart);
|
2012-11-21 15:53:11 +00:00
|
|
|
|
2012-11-21 20:10:24 +00:00
|
|
|
if ( m_pEditPart.is() )
|
|
|
|
{
|
|
|
|
xRef->m_pEditPart = rtl::Reference< OEditModel >( new OEditModel(m_pEditPart.get(), m_xServiceFactory));
|
2012-11-21 15:53:11 +00:00
|
|
|
}
|
2003-03-25 17:05:07 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{ // the clone source does not yet have an aggregate -> we don't yet need one, too
|
|
|
|
}
|
2012-11-21 20:10:24 +00:00
|
|
|
|
|
|
|
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();
|
2003-03-25 17:05:07 +00:00
|
|
|
}
|
|
|
|
|
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
|
2001-04-11 13:21:58 +00:00
|
|
|
// 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
|
|
|
{
|
2001-04-11 13:21:58 +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())
|
|
|
|
{
|
2003-03-25 17:05:07 +00:00
|
|
|
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
|
2003-03-25 17:05:07 +00:00
|
|
|
// 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;
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString SAL_CALL OFormattedFieldWrapper::getServiceName() throw(RuntimeException)
|
2000-09-18 15:33:13 +00:00
|
|
|
{
|
|
|
|
// return the old compatibility name for an EditModel
|
2013-04-23 11:48:24 +02:00
|
|
|
return OUString(FRM_COMPONENT_EDIT);
|
2000-09-18 15:33:13 +00:00
|
|
|
}
|
|
|
|
|
2001-04-11 13:21:58 +00:00
|
|
|
//------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
OUString SAL_CALL OFormattedFieldWrapper::getImplementationName( ) throw (RuntimeException)
|
2001-04-11 13:21:58 +00:00
|
|
|
{
|
2013-04-07 12:06:47 +02:00
|
|
|
return OUString("com.sun.star.comp.forms.OFormattedFieldWrapper");
|
2001-04-11 13:21:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
sal_Bool SAL_CALL OFormattedFieldWrapper::supportsService( const OUString& _rServiceName ) throw (RuntimeException)
|
2001-04-11 13:21:58 +00:00
|
|
|
{
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
|
|
|
//------------------------------------------------------------------
|
2013-04-07 12:06:47 +02:00
|
|
|
Sequence< OUString > SAL_CALL OFormattedFieldWrapper::getSupportedServiceNames( ) throw (RuntimeException)
|
2001-04-11 13:21:58 +00:00
|
|
|
{
|
|
|
|
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
|
2012-11-21 20:10:24 +00:00
|
|
|
OSL_ENSURE(m_pEditPart.is(), "OFormattedFieldWrapper::write : formatted part without edit part ?");
|
|
|
|
if ( !m_pEditPart.is() )
|
2013-04-07 12:06:47 +02:00
|
|
|
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);
|
2012-11-21 15:53:11 +00:00
|
|
|
Reference<XPropertySet> xEditProps;
|
2012-11-21 20:10:24 +00:00
|
|
|
query_interface(static_cast<XWeak*>(m_pEditPart.get()), xEditProps);
|
2000-09-18 15:33:13 +00:00
|
|
|
|
2012-11-22 12:26:52 +01: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"
|
2012-11-21 15:53:11 +00:00
|
|
|
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();
|
|
|
|
|
2012-11-21 15:53:11 +00:00
|
|
|
m_pEditPart->read(_rxInStream);
|
2012-11-21 20:10:24 +00:00
|
|
|
// this only works because an edit model can read the stuff written by a formatted model
|
|
|
|
// (maybe with some assertions) , but not vice versa
|
2012-11-21 15:53:11 +00:00
|
|
|
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;
|
|
|
|
}
|
|
|
|
|
2012-11-21 20:10:24 +00:00
|
|
|
// we have to decide from the data within the stream whether we should
|
|
|
|
// be an EditModel or a FormattedModel
|
2012-11-21 15:53:11 +00:00
|
|
|
|
2012-11-21 20:10:24 +00:00
|
|
|
{
|
|
|
|
// let an OEditModel do the reading
|
|
|
|
rtl::Reference< OEditModel > pBasicReader(new OEditModel(m_xServiceFactory));
|
|
|
|
pBasicReader->read(_rxInStream);
|
2012-11-21 15:53:11 +00:00
|
|
|
|
2012-11-21 20:10:24 +00:00
|
|
|
// 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_xServiceFactory));
|
|
|
|
m_xFormattedPart->read(_rxInStream);
|
|
|
|
m_pEditPart = pBasicReader;
|
|
|
|
m_xAggregate = Reference< XAggregation >( m_xFormattedPart, UNO_QUERY );
|
|
|
|
}
|
2012-11-21 15:53:11 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// 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_xServiceFactory->createInstance(FRM_SUN_COMPONENT_TEXTFIELD);
|
|
|
|
if (!xEditModel.is())
|
|
|
|
{
|
|
|
|
// arghhh ... instantiate it directly ... it's dirty, but we really need this aggregate
|
|
|
|
OEditModel* pModel = new OEditModel(m_xServiceFactory);
|
2000-11-23 07:48:15 +00:00
|
|
|
query_interface(static_cast<XWeak*>(pModel), xEditModel);
|
2000-09-18 15:33:13 +00:00
|
|
|
}
|
|
|
|
|
2012-11-21 15:53:11 +00:00
|
|
|
m_xAggregate = Reference<XAggregation> (xEditModel, UNO_QUERY);
|
|
|
|
DBG_ASSERT(m_xAggregate.is(), "OFormattedFieldWrapper::ensureAggregate : the OEditModel didn't have an XAggregation interface !");
|
2001-04-11 13:21:58 +00:00
|
|
|
|
|
|
|
{
|
2012-11-21 15:53:11 +00:00
|
|
|
Reference< XServiceInfo > xSI(m_xAggregate, UNO_QUERY);
|
|
|
|
if (!xSI.is())
|
|
|
|
{
|
|
|
|
OSL_FAIL("OFormattedFieldWrapper::ensureAggregate: the aggregate has no XServiceInfo!");
|
|
|
|
m_xAggregate.clear();
|
|
|
|
}
|
2001-04-11 13:21:58 +00:00
|
|
|
}
|
2000-09-18 15:33:13 +00:00
|
|
|
}
|
2012-11-21 20:10:24 +00:00
|
|
|
|
|
|
|
increment(m_refCount);
|
2000-09-18 15:33:13 +00:00
|
|
|
if (m_xAggregate.is())
|
2012-11-21 15:53:11 +00:00
|
|
|
{ // 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
|
|
|
}
|
2012-11-21 15:53:11 +00:00
|
|
|
decrement(m_refCount);
|
2000-09-18 15:33:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
//.........................................................................
|
|
|
|
}
|
|
|
|
//.........................................................................
|
|
|
|
|
|
|
|
|
2010-10-12 15:57:08 +02:00
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|