[PATCH] Report errors when [un]marshalling unknown types.

Jeremy White jwhite at codeweavers.com
Sat Oct 24 14:11:05 CDT 2009


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

diff --git a/dlls/oleaut32/tmarshal.c b/dlls/oleaut32/tmarshal.c
index e7d7b89..e81de94 100644
--- a/dlls/oleaut32/tmarshal.c
+++ b/dlls/oleaut32/tmarshal.c
@@ -909,7 +909,7 @@ serialize_param(
     }
     default:
 	ERR("Unhandled marshal type %d.\n",tdesc->vt);
-	return S_OK;
+	return E_FAIL;
     }
 }
 
@@ -1248,7 +1248,8 @@ deserialize_param(
 	    for (i=0;i<adesc->cDims;i++)
 		arrsize *= adesc->rgbounds[i].cElements;
 	    for (i=0;i<arrsize;i++)
-		deserialize_param(
+	    {
+		hres = deserialize_param(
 		    tinfo,
 		    readit,
 		    debugout,
@@ -1257,6 +1258,9 @@ deserialize_param(
 		    (DWORD*)((LPBYTE)(arg)+i*_xsize(&adesc->tdescElem, tinfo)),
 		    buf
 		);
+		if (hres)
+		    return hres;
+	    }
 	    return S_OK;
 	}
     case VT_SAFEARRAY: {
@@ -1271,7 +1275,7 @@ deserialize_param(
 	}
 	default:
 	    ERR("No handler for VT type %d!\n",tdesc->vt);
-	    return S_OK;
+	    return E_FAIL;
 	}
     }
 }
@@ -2128,7 +2132,7 @@ TMStubImpl_Invoke(
 	xargs += _argsize(&elem->tdesc, tinfo);
 	if (hres) {
 	    ERR("Failed to deserialize param %s, hres %x\n",relaystr(names[i+1]),hres);
-	    break;
+	    goto exit;
 	}
     }
 
-- 
1.5.6.5


--------------000106090601040707090302--



More information about the wine-devel mailing list