include/vcl/graph.hxx | 2 ++ svtools/source/graphic/graphic.cxx | 4 ++-- vcl/source/gdi/graph.cxx | 16 +++++++++++++--- 3 files changed, 17 insertions(+), 5 deletions(-)
New commits: commit b901f7699dae0c9985e80c22d4b9824b8386bdc1 Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri Mar 7 19:39:54 2014 +0100 x->getSomething(x->getImplementationId()) doesn't make any sense ...the point of the aIdentifier parameter to css.lang.XUnoTunnel.getSomething is so that caller and callee can verify they know each other and the value passed back (pointer in local address space, in this case) will actually make sense for the caller. Change-Id: Id79c419307992b30ea6ef7997b74a015631ad21c diff --git a/include/vcl/graph.hxx b/include/vcl/graph.hxx index e6fe04f..1639f5b 100644 --- a/include/vcl/graph.hxx +++ b/include/vcl/graph.hxx @@ -198,6 +198,8 @@ public: virtual void Assign( const SvDataCopyStream& ); const SvgDataPtr& getSvgData() const; + + static css::uno::Sequence<sal_Int8> getUnoTunnelId(); }; #endif // INCLUDED_VCL_GRAPH_HXX diff --git a/svtools/source/graphic/graphic.cxx b/svtools/source/graphic/graphic.cxx index 49b0f359..1248f6a 100644 --- a/svtools/source/graphic/graphic.cxx +++ b/svtools/source/graphic/graphic.cxx @@ -251,14 +251,14 @@ const ::Graphic* Graphic::getImplementation( const uno::Reference< uno::XInterfa throw() { uno::Reference< lang::XUnoTunnel > xTunnel( rxIFace, uno::UNO_QUERY ); - return( xTunnel.is() ? reinterpret_cast< ::Graphic* >( xTunnel->getSomething( getImplementationId_Static() ) ) : NULL ); + return( xTunnel.is() ? reinterpret_cast< ::Graphic* >( xTunnel->getSomething( ::Graphic::getUnoTunnelId() ) ) : NULL ); } sal_Int64 SAL_CALL Graphic::getSomething( const uno::Sequence< sal_Int8 >& rId ) throw( uno::RuntimeException, std::exception ) { - return( ( rId.getLength() == 16 && 0 == memcmp( getImplementationId().getConstArray(), rId.getConstArray(), 16 ) ) ? + return( ( rId.getLength() == 16 && 0 == memcmp( ::Graphic::getUnoTunnelId().getConstArray(), rId.getConstArray(), 16 ) ) ? reinterpret_cast< sal_Int64 >( mpGraphic ) : 0 ); } diff --git a/vcl/source/gdi/graph.cxx b/vcl/source/gdi/graph.cxx index be6af17..d604122 100644 --- a/vcl/source/gdi/graph.cxx +++ b/vcl/source/gdi/graph.cxx @@ -29,6 +29,7 @@ #include <com/sun/star/lang/XUnoTunnel.hpp> #include <com/sun/star/lang/XTypeProvider.hpp> #include <com/sun/star/graphic/XGraphic.hpp> +#include <cppuhelper/typeprovider.hxx> using namespace ::com::sun::star; @@ -224,9 +225,8 @@ Graphic::Graphic( const GDIMetaFile& rMtf ) Graphic::Graphic( const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >& rxGraphic ) { uno::Reference< lang::XUnoTunnel > xTunnel( rxGraphic, uno::UNO_QUERY ); - uno::Reference< lang::XTypeProvider > xProv( rxGraphic, uno::UNO_QUERY ); - const ::Graphic* pGraphic = ( ( xTunnel.is() && xProv.is() ) ? - reinterpret_cast< ::Graphic* >( xTunnel->getSomething( xProv->getImplementationId() ) ) : + const ::Graphic* pGraphic = ( xTunnel.is() ? + reinterpret_cast< ::Graphic* >( xTunnel->getSomething( getUnoTunnelId() ) ) : NULL ); if( pGraphic ) @@ -587,4 +587,14 @@ const SvgDataPtr& Graphic::getSvgData() const return mpImpGraphic->getSvgData(); } +namespace { + +struct Id: public rtl::Static<cppu::OImplementationId, Id> {}; + +} + +css::uno::Sequence<sal_Int8> Graphic::getUnoTunnelId() { + return Id::get().getImplementationId(); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits