diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-09-15 14:58:32 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2014-09-15 15:03:30 +0100 |
commit | 9128507579246b1559b0bc195d7e9f89541cbbbf (patch) | |
tree | bc0ffa20c4020a8fe0cec34c2ad564db362f8a83 | |
parent | cb7dc89f661170539a3917c1a33b4b2ccbf2899a (diff) |
Resolves: fdo#81635 crash after 3rd call to ApplicationScriptLibraryContainer
in PackageImpl::processPackage_
xComponentContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.script.ApplicationScriptLibraryContainer"
does not increment the refcount, so on leaving the method the refcount
is decremented by 1, because on the first enter the refcount happens to
be three, then if the extension has more than 3 items in it the refcount
hits 0 here and falls over
some of fdo#79301, fdo#70607, fdo#66706 might be dups of this
regression from 306efefe22e02248eff14f8be2cef68d75d26e55 I believe
Change-Id: I3da50693fe656b68c5555b641d9b32246c8fc208
-rw-r--r-- | sfx2/source/appl/appbaslib.cxx | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sfx2/source/appl/appbaslib.cxx b/sfx2/source/appl/appbaslib.cxx index 3eee7e575b68..a6dcf9abd0f7 100644 --- a/sfx2/source/appl/appbaslib.cxx +++ b/sfx2/source/appl/appbaslib.cxx @@ -152,28 +152,28 @@ bool SfxBasicManagerHolder::LegacyPsswdBinaryLimitExceeded( Sequence< OUString > return true; } - // Service for application library container - extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL com_sun_star_comp_sfx2_ApplicationDialogLibraryContainer_get_implementation( css::uno::XComponentContext *, css::uno::Sequence<css::uno::Any> const &) { SfxGetpApp()->GetBasicManager(); - return SfxGetpApp()->GetDialogContainer(); + css::uno::XInterface* pRet = SfxGetpApp()->GetDialogContainer(); + pRet->acquire(); + return pRet; } - // Service for application library container - extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL com_sun_star_comp_sfx2_ApplicationScriptLibraryContainer_get_implementation( css::uno::XComponentContext *, css::uno::Sequence<css::uno::Any> const &) { SfxGetpApp()->GetBasicManager(); - return SfxGetpApp()->GetBasicContainer(); + css::uno::XInterface* pRet = SfxGetpApp()->GetBasicContainer(); + pRet->acquire(); + return pRet; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |