From 29457fa92d5af4120f37986477f763bba3a4d032 Mon Sep 17 00:00:00 2001 From: Jeremy Kuhne Date: Mon, 1 Jul 2019 16:37:27 -0700 Subject: [PATCH] Fix COM interop ELEMDESC ELEMDESC doesn't contain a pointer. This fixes a regression introduced in #818. Fixes #896 --- src/Common/src/NativeMethods.cs | 2 +- .../ComponentModel/COM2Interop/COM2TypeInfoProcessor.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Common/src/NativeMethods.cs b/src/Common/src/NativeMethods.cs index b4a24211b69..49006c76a4f 100644 --- a/src/Common/src/NativeMethods.cs +++ b/src/Common/src/NativeMethods.cs @@ -5397,7 +5397,7 @@ public enum tagVARFLAGS [StructLayout(LayoutKind.Sequential)] public unsafe struct tagELEMDESC { - public NativeMethods.tagTYPEDESC* tdesc; + public NativeMethods.tagTYPEDESC tdesc; public NativeMethods.tagPARAMDESC paramdesc; } diff --git a/src/System.Windows.Forms/src/System/Windows/Forms/ComponentModel/COM2Interop/COM2TypeInfoProcessor.cs b/src/System.Windows.Forms/src/System/Windows/Forms/ComponentModel/COM2Interop/COM2TypeInfoProcessor.cs index 976defb0815..2e7f5c3a77d 100644 --- a/src/System.Windows.Forms/src/System/Windows/Forms/ComponentModel/COM2Interop/COM2TypeInfoProcessor.cs +++ b/src/System.Windows.Forms/src/System/Windows/Forms/ComponentModel/COM2Interop/COM2TypeInfoProcessor.cs @@ -719,7 +719,7 @@ private static void ProcessFunctions(UnsafeNativeMethods.ITypeInfo typeInfo, IDi unsafe { - typeDesc = *funcDesc.elemdescFunc.tdesc; + typeDesc = funcDesc.elemdescFunc.tdesc; } } else @@ -734,7 +734,7 @@ private static void ProcessFunctions(UnsafeNativeMethods.ITypeInfo typeInfo, IDi ref readonly NativeMethods.tagELEMDESC ed = ref UnsafeNativeMethods.PtrToRef(funcDesc.lprgelemdescParam); unsafe { - typeDesc = *ed.tdesc; + typeDesc = ed.tdesc; } } pi = ProcessDataCore(typeInfo, propInfoList, funcDesc.memid, nameDispID, in typeDesc, funcDesc.wFuncFlags); @@ -973,7 +973,7 @@ private static void ProcessVariables(UnsafeNativeMethods.ITypeInfo typeInfo, IDi unsafe { - PropInfo pi = ProcessDataCore(typeInfo, propInfoList, varDesc.memid, nameDispID, in *varDesc.elemdescVar.tdesc, varDesc.wVarFlags); + PropInfo pi = ProcessDataCore(typeInfo, propInfoList, varDesc.memid, nameDispID, in varDesc.elemdescVar.tdesc, varDesc.wVarFlags); if (pi.ReadOnly != PropInfo.ReadOnlyTrue) { pi.ReadOnly = PropInfo.ReadOnlyFalse;