--- trunk/reactos/lib/oleaut32/oleaut.c 2005-12-26 23:16:41 UTC (rev 20350)
+++ trunk/reactos/lib/oleaut32/oleaut.c 2005-12-26 23:18:49 UTC (rev 20351)
@@ -629,7 +629,7 @@
COLORREF colorref;
BYTE b = HIBYTE(HIWORD(clr));
- TRACE("(%08lx, %p, %p):stub\n", clr, hpal, pColorRef);
+ TRACE("(%08lx, %p, %p)\n", clr, hpal, pColorRef);
/*
* In case pColorRef is NULL, provide our own to simplify the code.
--- trunk/reactos/lib/oleaut32/safearray.c 2005-12-26 23:16:41 UTC (rev 20350)
+++ trunk/reactos/lib/oleaut32/safearray.c 2005-12-26 23:18:49 UTC (rev 20351)
@@ -355,7 +355,9 @@
/* Copy data items from one array to another */
static HRESULT SAFEARRAY_CopyData(SAFEARRAY *psa, SAFEARRAY *dest)
{
- if (!psa->pvData || !dest->pvData || psa->fFeatures & FADF_DATADELETED)
+ if (!psa->pvData)
+ return S_OK;
+ else if (!dest->pvData || psa->fFeatures & FADF_DATADELETED)
return E_INVALIDARG;
else
{
@@ -1378,6 +1380,12 @@
if (!psa)
return S_OK; /* Handles copying of NULL arrays */
+ if (!psa->cbElements)
+ {
+ ERR("not copying an array of 0 elements\n");
+ return E_INVALIDARG;
+ }
+
if (psa->fFeatures & (FADF_RECORD|FADF_HAVEIID|FADF_HAVEVARTYPE))
{
VARTYPE vt;
--- trunk/reactos/lib/oleaut32/typelib.c 2005-12-26 23:16:41 UTC (rev 20350)
+++ trunk/reactos/lib/oleaut32/typelib.c 2005-12-26 23:18:49 UTC (rev 20351)
@@ -85,7 +85,7 @@
/* The OLE Automation ProxyStub Interface Class (aka Typelib Marshaler) */
const GUID CLSID_PSOAInterface = { 0x00020424, 0, 0, { 0xC0, 0, 0, 0, 0, 0, 0, 0x46 } };
-static HRESULT typedescvt_to_variantvt(ITypeInfo *tinfo, TYPEDESC *tdesc, VARTYPE *vt);
+static HRESULT typedescvt_to_variantvt(ITypeInfo *tinfo, const TYPEDESC *tdesc, VARTYPE *vt);
static HRESULT TLB_AllocAndInitVarDesc(const VARDESC *src, VARDESC **dest_ptr);
/****************************************************************************
@@ -5054,7 +5054,7 @@
return E_FAIL;
}
-static HRESULT userdefined_to_variantvt(ITypeInfo *tinfo, TYPEDESC *tdesc, VARTYPE *vt)
+static HRESULT userdefined_to_variantvt(ITypeInfo *tinfo, const TYPEDESC *tdesc, VARTYPE *vt)
{
HRESULT hr = S_OK;
ITypeInfo *tinfo2 = NULL;
@@ -5088,11 +5088,11 @@
break;
case TKIND_INTERFACE:
- if (IsEqualIID(&IID_IDispatch, &tattr->guid))
- *vt |= VT_DISPATCH;
- else
- *vt |= VT_UNKNOWN;
- break;
+ if (IsEqualIID(&IID_IDispatch, &tattr->guid))
+ *vt |= VT_DISPATCH;
+ else
+ *vt |= VT_UNKNOWN;
+ break;
case TKIND_DISPATCH:
*vt |= VT_DISPATCH;
@@ -5118,7 +5118,7 @@
return hr;
}
-static HRESULT typedescvt_to_variantvt(ITypeInfo *tinfo, TYPEDESC *tdesc, VARTYPE *vt)
+static HRESULT typedescvt_to_variantvt(ITypeInfo *tinfo, const TYPEDESC *tdesc, VARTYPE *vt)
{
HRESULT hr = S_OK;
@@ -5134,7 +5134,7 @@
((tdesc->vt == VT_PTR) && (tdesc->u.lptdesc->vt == VT_USERDEFINED)))
{
VARTYPE vt_userdefined = 0;
- TYPEDESC *tdesc_userdefined = tdesc;
+ const TYPEDESC *tdesc_userdefined = tdesc;
if (tdesc->vt == VT_PTR)
{
vt_userdefined = VT_BYREF;