[PATCH] oleaut32: Mask out certain features on array copy

Dmitry Timoshkov dmitry at baikal.ru
Wed Jan 8 09:03:34 CST 2014


Nikolay Sivov <nsivov at codeweavers.com> wrote:

> +/* features listed here are not propagated to newly created array or data copy
> +   created with SafeArrayCopy()/SafeArrayCopyData() */
> +static const USHORT ignored_copy_features =
> +        FADF_AUTO |
> +        FADF_STATIC |
> +        FADF_EMBEDDED |
> +        FADF_FIXEDSIZE |
> +        FADF_CREATEVECTOR |
> +        FADF_DATADELETED;
...
> -      (*ppsaOut)->fFeatures = psa->fFeatures & ~FADF_CREATEVECTOR;
> +      (*ppsaOut)->fFeatures = psa->fFeatures & ~(FADF_CREATEVECTOR|ignored_copy_features);

ignored_copy_features already includes FADF_CREATEVECTOR.

> --- a/dlls/oleaut32/tests/safearray.c
> +++ b/dlls/oleaut32/tests/safearray.c
> @@ -57,6 +57,14 @@ static BOOL has_i8;
>  /* Has INT_PTR/UINT_PTR type? */
>  static BOOL has_int_ptr;
>  
> +static const USHORT ignored_copy_features[] =
> +    {
> +        FADF_AUTO,
> +        FADF_STATIC,
> +        FADF_EMBEDDED,
> +        FADF_FIXEDSIZE
> +    };

Tested and actually ignored flags do not match. Either the test is not complete
or the ignored list includes too much.

-- 
Dmitry.



More information about the wine-devel mailing list