changeset 284:bb89fd34ec82

Fix for OLE functionality. Thanks to Enzo Petrelli
author Frank Benoit <benoit@tionex.de>
date Wed, 20 Aug 2008 15:20:55 +0200
parents 92e785261f30
children 2a558b06fef7
files dwt/ole/win32/OleAutomation.d dwt/ole/win32/OleClientSite.d dwt/ole/win32/OleControlSite.d
diffstat 3 files changed, 11 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/dwt/ole/win32/OleAutomation.d	Fri Aug 08 15:19:05 2008 +0200
+++ b/dwt/ole/win32/OleAutomation.d	Wed Aug 20 15:20:55 2008 +0200
@@ -260,17 +260,17 @@
             data.args[i].name = names[i + 1];
         }
         short[1] vt;
-        COM.MoveMemory(vt.ptr, funcdesc.lprgelemdescParam + i * 16 + 4, 2);
+        COM.MoveMemory(vt.ptr, (cast(void*)funcdesc.lprgelemdescParam) + i * 16 + 4, 2);
         if (vt[0] is OLE.VT_PTR) {
             int[1] pTypedesc;
-            COM.MoveMemory(pTypedesc.ptr, funcdesc.lprgelemdescParam + i * 16, 4);
+            COM.MoveMemory(pTypedesc.ptr, (cast(void*)funcdesc.lprgelemdescParam) + i * 16, 4);
             short[1] vt2;
             COM.MoveMemory(vt2.ptr, pTypedesc[0] + 4, 2);
             vt[0] = cast(short)(vt2[0] | COM.VT_BYREF);
         }
         data.args[i].type = vt[0];
         short[1] wParamFlags;
-        COM.MoveMemory(wParamFlags.ptr, funcdesc.lprgelemdescParam + i * 16 + 12, 2);
+        COM.MoveMemory(wParamFlags.ptr, (cast(void*)funcdesc.lprgelemdescParam) + i * 16 + 12, 2);
         data.args[i].flags = wParamFlags[0];
     }
 
--- a/dwt/ole/win32/OleClientSite.d	Fri Aug 08 15:19:05 2008 +0200
+++ b/dwt/ole/win32/OleClientSite.d	Wed Aug 20 15:20:55 2008 +0200
@@ -151,8 +151,8 @@
 
     // install the Ole Frame for this Client Site
     while (parent !is null) {
-        if ( auto frame = cast(OleFrame)parent){
-            frame = frame;
+        if ( auto aframe = cast(OleFrame)parent){
+            frame = aframe;
             break;
         }
         parent = parent.getParent();
@@ -933,8 +933,9 @@
 
     if (riid is null || ppvObject is null)
         return COM.E_NOINTERFACE;
-    GUID* guid = new GUID();
-    COM.MoveMemory(guid, riid, GUID.sizeof);
+    GUID oGuid = *riid;
+    GUID* guid = &oGuid;
+    //COM.MoveMemory(guid, riid, GUID.sizeof);
 
     if (COM.IsEqualGUID(guid, &COM.IIDIUnknown)) {
         *ppvObject = cast(void*)cast(IUnknown)iUnknown;
--- a/dwt/ole/win32/OleControlSite.d	Fri Aug 08 15:19:05 2008 +0200
+++ b/dwt/ole/win32/OleControlSite.d	Wed Aug 20 15:20:55 2008 +0200
@@ -618,8 +618,9 @@
         return result;
     if (riid is null || ppvObject is null)
         return COM.E_INVALIDARG;
-    GUID* guid;
-    COM.MoveMemory(&guid, riid, GUID.sizeof);
+    GUID oGuid = &riid;
+    GUID* guid = &oGuid;
+    //COM.MoveMemory(&guid, riid, GUID.sizeof);
     if (COM.IsEqualGUID(guid, &COM.IIDIOleControlSite)) {
         *ppvObject = cast(void*)cast(IOleControlSite)iOleControlSite;
         AddRef();