summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2014-09-15 14:58:32 +0100
committerCaolán McNamara <caolanm@redhat.com>2014-09-15 15:03:30 +0100
commit9128507579246b1559b0bc195d7e9f89541cbbbf (patch)
treebc0ffa20c4020a8fe0cec34c2ad564db362f8a83
parentcb7dc89f661170539a3917c1a33b4b2ccbf2899a (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.cxx12
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: */