cppuhelper/source/defaultbootstrap.cxx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
New commits: commit 3b1798a55bf7c193b911ce23e280e6a0e1e4314a Author: Stephan Bergmann <sberg...@redhat.com> Date: Mon May 14 18:20:30 2012 +0200 Work around extension factories not implementing XServiceInfo ...that would otherwise lead to "Bad insert element" failure during live-insertion. Change-Id: I74f883c9b613f03256abb7be7657f25b418f821d diff --git a/cppuhelper/source/defaultbootstrap.cxx b/cppuhelper/source/defaultbootstrap.cxx index f948586..df13fd6 100644 --- a/cppuhelper/source/defaultbootstrap.cxx +++ b/cppuhelper/source/defaultbootstrap.cxx @@ -950,6 +950,22 @@ void ServiceManager::insert(css::uno::Any const & aElement) insertLegacyFactory(info); return; } +// At least revisions up to 1.7 of LanguageTool.oxt (incl. the bundled 1.4.0 in +// module languagetool) contain an (actively registered) factory that does not +// implement XServiceInfo; the old OServiceManager::insert +// (stoc/source/servicemanager/servicemanager.cxx) silently did not add such +// broken factories to its m_ImplementationNameMap, so ignore them here for +// backwards compatibility of live-insertion of extensions, too (can go again +// for incompatible LO 4): +#if SUPD < 400 + css::uno::Reference< css::lang::XSingleComponentFactory > legacy; + if ((aElement >>= legacy) && legacy.is()) { + SAL_WARN( + "cppuhelper", + "Ignored XSingleComponentFactory not implementing XServiceInfo"); + return; + } +#endif throw css::lang::IllegalArgumentException( "Bad insert element", static_cast< cppu::OWeakObject * >(this), 0); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits