[Libreoffice-commits] core.git: 2 commits - embedserv/source extensions/README extensions/source extensions/test

Michael Stahl mstahl at redhat.com
Tue May 31 22:16:05 UTC 2016


 embedserv/source/embed/docholder.cxx              |    2 -
 extensions/README                                 |   33 +++++++++++++++++++++-
 extensions/source/ole/oleobjw.cxx                 |    2 -
 extensions/source/ole/servprov.cxx                |   10 +++---
 extensions/source/ole/unoconversionutilities.hxx  |    6 ++--
 extensions/test/ole/OleClient/funcs.cxx           |    2 -
 extensions/test/ole/OleConverterVar1/convTest.cxx |    2 -
 7 files changed, 45 insertions(+), 12 deletions(-)

New commits:
commit 1aff9299ab2e308674af51a138294017d2cc3b8d
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Jun 1 00:10:46 2016 +0200

    extensions: more README
    
    Change-Id: I9cd902ce606c800e67cc142daf698962544b26bc

diff --git a/extensions/README b/extensions/README
index aefd5b88..eeff42a 100644
--- a/extensions/README
+++ b/extensions/README
@@ -1,4 +1,4 @@
-Browser plugin, activex control, scanner bits.  Online update.
+This module contains a grab-bag of unrelated misc. libraries, *none* of which is an extension.
 
 == Application online update checking ==
 
@@ -12,3 +12,34 @@ This creates one more thread, UpdateCheckThread, that regularly checks whether
 we have reached the time when we should ask for the update.  If yes, asks for
 that, and shows the download button in the menu (if the new update is
 available).
+
+== OLE automation bridge ==
+
+A bridge between "OLE automation" and UNO, so you can use UNO services
+from JScript, VBScript, etc.
+
+https://www.openoffice.org/udk/common/man/spec/ole_bridge.html
+
+See udkapi/com/sun/star/bridge/oleautomation/ApplicationRegistration.idl
+
+This is initialized in Desktop::Main() in Desktop::OpenClients_Impl()
+by creating the service "com.sun.star.bridge.OleApplicationRegistration",
+which is implemented by ole_adapter::OleServer_Impl.
+
+See extensions/source/ole/
+
+== ActiveX control ==
+
+This allows embedding LO into a Win32 application as an ActiveX control.
+See extensions/source/activex/
+
+== Spotlight provider ==
+
+On Mac OS X, this allows indexing ODF documents with Spotlight.
+See extensions/source/macosx/spotlight/
+
+== Scanner support ==
+
+You can scan from LibreOffice, using platform specific backends like TWAIN/SANE.
+See extensions/source/scanner/
+
commit c11e60f11f34b12bf73a08a96634202a8d3aef0c
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue May 31 23:45:53 2016 +0200

    tdf#99643 OLE automation bridge: fix 64-bit pointer conversions
    
    XBridgeSupplier2::createBridge() is always called in-process and should
    therefore expect and create Anys with native-sized encoded pointers,
    so use sal_uIntPtr.
    
    Change-Id: Ia757ff38568b07de8085a1a9d323d806bcca0f63
    Note: Currently all calls in LO code are with source=UNO, target=OLE.

diff --git a/embedserv/source/embed/docholder.cxx b/embedserv/source/embed/docholder.cxx
index 5568535..7708e1e 100644
--- a/embedserv/source/embed/docholder.cxx
+++ b/embedserv/source/embed/docholder.cxx
@@ -1035,7 +1035,7 @@ IDispatch* DocumentHolder::GetIDispatch()
                     bridge::ModelDependent::OLE );
 
                 if ( anyResult.getValueTypeClass() ==
-                     cppu::UnoType<sal_uInt32>::get().getTypeClass() )
+                     cppu::UnoType<sal_uIntPtr>::get().getTypeClass() )
                 {
                     VARIANT* pVariant = *(VARIANT**)anyResult.getValue();
                     if ( pVariant->vt == VT_DISPATCH )
diff --git a/extensions/source/ole/oleobjw.cxx b/extensions/source/ole/oleobjw.cxx
index b2fde4a..2a2b7eb 100644
--- a/extensions/source/ole/oleobjw.cxx
+++ b/extensions/source/ole/oleobjw.cxx
@@ -725,7 +725,7 @@ Any SAL_CALL IUnknownWrapper_Impl::createBridge( const Any& modelDepObject,
                 pVariant->punkVal->AddRef();
             }
 
-            ret.setValue((void*)&pVariant, cppu::UnoType<sal_uInt32>::get());
+            ret.setValue(static_cast<void*>(&pVariant), cppu::UnoType<sal_uIntPtr>::get());
         }
     }
 
diff --git a/extensions/source/ole/servprov.cxx b/extensions/source/ole/servprov.cxx
index 6d3d5fa..95b3bad 100644
--- a/extensions/source/ole/servprov.cxx
+++ b/extensions/source/ole/servprov.cxx
@@ -160,7 +160,7 @@ STDMETHODIMP ProviderOleWrapper_Impl::CreateInstance(IUnknown FAR* punkOuter,
                                         OLE);
 
 
-            if (oleAny.getValueTypeClass() == cppu::UnoType<sal_uInt32>::get().getTypeClass())
+            if (oleAny.getValueTypeClass() == cppu::UnoType<sal_uIntPtr>::get().getTypeClass())
             {
                 VARIANT* pVariant = *(VARIANT**)oleAny.getValue();
 
@@ -291,7 +291,7 @@ STDMETHODIMP OneInstanceOleWrapper_Impl::CreateInstance(IUnknown FAR* punkOuter,
                                         OLE);
 
 
-        if (oleAny.getValueTypeClass() == TypeClass_UNSIGNED_LONG)
+        if (oleAny.getValueTypeClass() == cppu::UnoType<sal_uIntPtr>::get().getTypeClass())
         {
             VARIANT* pVariant = *(VARIANT**)oleAny.getValue();
 
@@ -374,14 +374,14 @@ Any SAL_CALL OleConverter_Impl2::createBridge(const Any& modelDepObject,
                     CoTaskMemFree(pVariant);
                     throw IllegalArgumentException();
                 }
-                ret.setValue((void*) &pVariant, cppu::UnoType<sal_uInt32>::get());
+                ret.setValue(static_cast<void*>(&pVariant), cppu::UnoType<sal_uIntPtr>::get());
             }
             else
                 throw IllegalArgumentException();
         }
         else if (sourceModelType == OLE)
         {
-            if (modelDepObject.getValueType() != cppu::UnoType<sal_uInt32>::get())
+            if (modelDepObject.getValueType() != cppu::UnoType<sal_uIntPtr>::get())
             {
                 throw IllegalArgumentException();
             }
@@ -397,7 +397,7 @@ Any SAL_CALL OleConverter_Impl2::createBridge(const Any& modelDepObject,
                 }
                 else
                 {
-                    ret.setValue((void*) &pVariant, cppu::UnoType<sal_uInt32>::get());
+                    ret.setValue(static_cast<void*>(&pVariant), cppu::UnoType<sal_uIntPtr>::get());
                 }
             }
             else if (destModelType == UNO)
diff --git a/extensions/source/ole/unoconversionutilities.hxx b/extensions/source/ole/unoconversionutilities.hxx
index bdf61db..e1459b8 100644
--- a/extensions/source/ole/unoconversionutilities.hxx
+++ b/extensions/source/ole/unoconversionutilities.hxx
@@ -244,8 +244,10 @@ bool convertSelfToCom( T& unoInterface, VARIANT * pVar)
             Sequence<sal_Int8> seqId( arId, 16);
             Any anySource;
             anySource <<= xInt;
-            Any anyDisp=    xSupplier->createBridge( anySource, seqId, UNO, OLE);
-            if( anyDisp.getValueTypeClass() == TypeClass_UNSIGNED_LONG)
+            Any anyDisp = xSupplier->createBridge(anySource, seqId, UNO, OLE);
+
+            // due to global-process-id check this must be in-process pointer
+            if (anyDisp.getValueTypeClass() == cppu::UnoType<sal_uIntPtr>::get().getTypeClass())
             {
                 VARIANT* pvariant= *(VARIANT**)anyDisp.getValue();
                 HRESULT hr;
diff --git a/extensions/test/ole/OleClient/funcs.cxx b/extensions/test/ole/OleClient/funcs.cxx
index a67cdbb..8070b08 100644
--- a/extensions/test/ole/OleClient/funcs.cxx
+++ b/extensions/test/ole/OleClient/funcs.cxx
@@ -92,7 +92,7 @@ Reference<XInvocation> convertComObject( IUnknown* pUnk)
 
     Any any;
     CComVariant var( pUnk);
-    any <<= ( sal_uInt32)&var;
+    any <<= (sal_uIntPtr) &var;
     sal_uInt8 arId[16];
     rtl_getGlobalProcessId( arId);
     Any target= xSuppl->createBridge( any, Sequence<sal_Int8>( (sal_Int8*)arId, 16), OLE, UNO );
diff --git a/extensions/test/ole/OleConverterVar1/convTest.cxx b/extensions/test/ole/OleConverterVar1/convTest.cxx
index 112f8de..1c7538c 100644
--- a/extensions/test/ole/OleConverterVar1/convTest.cxx
+++ b/extensions/test/ole/OleConverterVar1/convTest.cxx
@@ -129,7 +129,7 @@ HRESULT doTest()
     rtl_getGlobalProcessId( arId);
     Any target= xSuppl->createBridge( any, Sequence<sal_Int8>( (sal_Int8*)arId, 16), UNO, OLE);
     CComDispatchDriver oletest;
-    if (target.getValueTypeClass() == cppu::UnoType<sal_uInt32>::get().getTypeClass())
+    if (target.getValueTypeClass() == cppu::UnoType<sal_uIntPtr>::get().getTypeClass())
     {
         VARIANT* pVariant = *(VARIANT**)target.getValue();
 


More information about the Libreoffice-commits mailing list