Aric Stewart : oleaut32: Implement de/serialize_param of types VT_ARRAY|< type>.

Alexandre Julliard julliard at winehq.org
Fri Jan 30 07:58:25 CST 2009


Module: wine
Branch: master
Commit: bbf4835568096cf4949d07d323b40e6f502d347c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=bbf4835568096cf4949d07d323b40e6f502d347c

Author: Aric Stewart <aric at codeweavers.com>
Date:   Thu Jan 29 09:52:29 2009 -0600

oleaut32: Implement de/serialize_param of types VT_ARRAY|<type>.

---

 dlls/oleaut32/tmarshal.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/dlls/oleaut32/tmarshal.c b/dlls/oleaut32/tmarshal.c
index a7b4009..10149f2 100644
--- a/dlls/oleaut32/tmarshal.c
+++ b/dlls/oleaut32/tmarshal.c
@@ -606,10 +606,15 @@ serialize_param(
     marshal_state	*buf)
 {
     HRESULT hres = S_OK;
+    VARTYPE vartype;
 
     TRACE("(tdesc.vt %s)\n",debugstr_vt(tdesc->vt));
 
-    switch (tdesc->vt) {
+    vartype = tdesc->vt;
+    if ((vartype & 0xf000) == VT_ARRAY)
+        vartype = VT_SAFEARRAY;
+
+    switch (vartype) {
     case VT_EMPTY: /* nothing. empty variant for instance */
 	return S_OK;
     case VT_I8:
@@ -919,11 +924,16 @@ deserialize_param(
     marshal_state	*buf)
 {
     HRESULT hres = S_OK;
+    VARTYPE vartype;
 
     TRACE("vt %s at %p\n",debugstr_vt(tdesc->vt),arg);
 
+    vartype = tdesc->vt;
+    if ((vartype & 0xf000) == VT_ARRAY)
+        vartype = VT_SAFEARRAY;
+
     while (1) {
-	switch (tdesc->vt) {
+	switch (vartype) {
 	case VT_EMPTY:
 	    if (debugout) TRACE_(olerelay)("<empty>\n");
 	    return S_OK;




More information about the wine-cvs mailing list