/* 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
{
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;