PATCH: more tmarshal

Marcus Meissner marcus at jet.franken.de
Wed Dec 11 08:52:16 CST 2002


Hi,

VT_USERDEFINED in turn can contain any 'normal' type, so serialize/deserialize
all types. Spotted by Excel Macro Recorder.

Ciao, Marcus

Changelog:
	Serialize/deserialize all reftypes in VT_USERDEFINED.


Index: tmarshal.c
===================================================================
RCS file: /home/wine/wine/dlls/oleaut32/tmarshal.c,v
retrieving revision 1.11
diff -u -u -r1.11 tmarshal.c
--- tmarshal.c	5 Dec 2002 20:33:08 -0000	1.11
+++ tmarshal.c	11 Dec 2002 14:48:23 -0000
@@ -556,11 +556,25 @@
 	    if (debugout) MESSAGE("}");
 	    break;
 	}
-	default:
-	    FIXME("Don't know how to marshal type kind %d\n",tattr->typekind);
-	    hres = E_FAIL;
+	default: {
+	    TYPEDESC tdesc2;
+
+	    if (debugout) MESSAGE("U{");
+	    memset(&tdesc2,0,sizeof(tdesc2));
+	    tdesc2.vt = tattr->typekind;
+	    hres = serialize_param(
+			tinfo2,
+			writeit,
+			debugout,
+			dealloc,
+			&tdesc2,
+			arg,
+			buf
+	    );
+	    if (debugout) MESSAGE("}");
 	    break;
 	}
+	}
 	ITypeInfo_Release(tinfo2);
 	return hres;
     }
@@ -896,10 +910,24 @@
 		    if (debugout) MESSAGE("}");
 		    break;
 		}
-		default:
-		    FIXME("Don't know how to marshal type kind %d\n",tattr->typekind);
-		    hres = E_FAIL;
+		default: {
+		    TYPEDESC tdesc2;
+
+		    if (debugout) MESSAGE("U{");
+		    memset(&tdesc2,0,sizeof(tdesc2));
+		    tdesc2.vt = tattr->typekind;
+		    hres = deserialize_param(
+				tinfo2,
+				readit,
+				debugout,
+				alloc,
+				&tdesc2,
+				(DWORD*)*arg,
+				buf
+		    );
+		    if (debugout) MESSAGE("}");
 		    break;
+		}
 		}
 	    }
 	    if (hres)



More information about the wine-patches mailing list