[2/2] dxdiagn: Successfully copy to destination variants with an invalid type in IDxDiagContainer::GetProp.

Andrew Nguyen arethusa26 at gmail.com
Tue Mar 23 09:13:22 CDT 2010


On Tue, Mar 23, 2010 at 5:47 AM, Alexandre Julliard <julliard at winehq.org> wrote:
> Andrew Nguyen <arethusa26 at gmail.com> writes:
>
>> @@ -221,9 +221,17 @@ static HRESULT WINAPI IDxDiagContainerImpl_GetProp(PDXDIAGCONTAINER iface, LPCWS
>>
>>    p = This->properties;
>>    while (NULL != p) {
>> -    if (0 == lstrcmpW(p->vName, pwszPropName)) {
>> -      VariantCopy(pvarProp, &p->v);
>> -      return S_OK;
>> +    if (0 == lstrcmpW(p->vName, pwszPropName)) {
>> +      HRESULT hr = VariantClear(pvarProp);
>> +      if (hr == DISP_E_ARRAYISLOCKED)
>> +      {
>> +        while (SafeArrayUnlock(V_ARRAY(pvarProp)) == S_OK);
>> +        VariantClear(pvarProp);
>
> This looks suspicious. Do you have evidence that the array should be
> forcibly unlocked and destroyed?
>
> --
> Alexandre Julliard
> julliard at winehq.org
>

I thought I observed a crash on native when I tried to free the safe
array after the GetProp call, but some rechecking indicated a mistake
on my part. I'll resend a more reasonable patch.



More information about the wine-devel mailing list