Esme Povirk (@madewokherd) commented about dlls/gdiplus/image.c:
- if (GdipGetEffectParameterSize(effect, ¶msize) != Ok)
return InvalidParameter;
- switch (effect->type)
- {
- case BlurEffect:
if (paramsize != size)
return InvalidParameter;
effect->p.blurparams = malloc(size);
memcpy(effect->p.blurparams, params, size);
break;
- case SharpenEffect:
if (paramsize != size)
return InvalidParameter;
effect->p.sharpenparams = malloc(size);
memcpy(effect->p.sharpenparams, params, size);
I don't think it makes sense to duplicate this for each type. The member of the union may be different, but the code is equivalent.