Commit 5e09c298 authored by qingdoa daoo's avatar qingdoa daoo Committed by Alexandre Julliard

oleaut32: Copying a NULL BSTR should result in an empty BSTR in VariantCopy.

parent 4598c973
...@@ -528,6 +528,23 @@ static void test_VariantCopy(void) ...@@ -528,6 +528,23 @@ static void test_VariantCopy(void)
vt | ExtraFlags[i], V_VT(&vDst)); vt | ExtraFlags[i], V_VT(&vDst));
} }
} }
/* Test that copying a NULL BSTR results in an empty BSTR */
memset(&vDst, 0, sizeof(vDst));
V_VT(&vDst) = VT_EMPTY;
memset(&vSrc, 0, sizeof(vSrc));
V_VT(&vSrc) = VT_BSTR;
hres = VariantCopy(&vDst, &vSrc);
ok(hres == S_OK, "Copy(NULL BSTR): Failed to copy a NULL BSTR\n");
if (hres == S_OK)
{
ok((V_VT(&vDst) == VT_BSTR) && V_BSTR(&vDst),
"Copy(NULL BSTR): should have non-NULL result\n");
if ((V_VT(&vDst) == VT_BSTR) && V_BSTR(&vDst))
{
ok(*V_BSTR(&vDst) == 0, "Copy(NULL BSTR): result not empty\n");
}
}
} }
/* Determine if a vt is valid for VariantCopyInd() */ /* Determine if a vt is valid for VariantCopyInd() */
......
...@@ -718,8 +718,6 @@ HRESULT WINAPI VariantCopy(VARIANTARG* pvargDest, VARIANTARG* pvargSrc) ...@@ -718,8 +718,6 @@ HRESULT WINAPI VariantCopy(VARIANTARG* pvargDest, VARIANTARG* pvargSrc)
} }
else if (V_VT(pvargSrc) == VT_BSTR) else if (V_VT(pvargSrc) == VT_BSTR)
{ {
if (V_BSTR(pvargSrc))
{
V_BSTR(pvargDest) = SysAllocStringByteLen((char*)V_BSTR(pvargSrc), SysStringByteLen(V_BSTR(pvargSrc))); V_BSTR(pvargDest) = SysAllocStringByteLen((char*)V_BSTR(pvargSrc), SysStringByteLen(V_BSTR(pvargSrc)));
if (!V_BSTR(pvargDest)) if (!V_BSTR(pvargDest))
{ {
...@@ -727,7 +725,6 @@ HRESULT WINAPI VariantCopy(VARIANTARG* pvargDest, VARIANTARG* pvargSrc) ...@@ -727,7 +725,6 @@ HRESULT WINAPI VariantCopy(VARIANTARG* pvargDest, VARIANTARG* pvargSrc)
hres = E_OUTOFMEMORY; hres = E_OUTOFMEMORY;
} }
} }
}
else if (V_VT(pvargSrc) == VT_RECORD) else if (V_VT(pvargSrc) == VT_RECORD)
{ {
hres = VARIANT_CopyIRecordInfo(&V_UNION(pvargDest,brecVal)); hres = VARIANT_CopyIRecordInfo(&V_UNION(pvargDest,brecVal));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment