oleaut32: Fix VARIANT_UserFree.

This commit is contained in:
Huw Davies 2006-05-05 15:49:57 +01:00 committed by Alexandre Julliard
parent 2898b5d9ad
commit 3abd27c624
1 changed files with 20 additions and 17 deletions

View File

@ -646,23 +646,26 @@ void WINAPI VARIANT_UserFree(unsigned long *pFlags, VARIANT *pvar)
VariantClear(pvar); VariantClear(pvar);
if (!ref) return; if (!ref) return;
switch (vt) { if(vt & VT_ARRAY)
case VT_BSTR | VT_BYREF: LPSAFEARRAY_UserFree(pFlags, V_ARRAYREF(pvar));
BSTR_UserFree(pFlags, ref); else
break; {
case VT_VARIANT | VT_BYREF: switch (vt)
VARIANT_UserFree(pFlags, ref); {
break; case VT_BSTR | VT_BYREF:
case VT_RECORD | VT_BYREF: BSTR_UserFree(pFlags, V_BSTRREF(pvar));
FIXME("handle BRECORD by ref\n"); break;
break; case VT_VARIANT | VT_BYREF:
case VT_UNKNOWN: VARIANT_UserFree(pFlags, V_VARIANTREF(pvar));
case VT_DISPATCH: break;
IUnknown_Release(V_UNKNOWN(pvar)); case VT_RECORD | VT_BYREF:
break; FIXME("handle BRECORD by ref\n");
default: break;
FIXME("handle unknown complex type\n"); case VT_UNKNOWN | VT_BYREF:
break; case VT_DISPATCH | VT_BYREF:
IUnknown_Release(*V_UNKNOWNREF(pvar));
break;
}
} }
CoTaskMemFree(ref); CoTaskMemFree(ref);