Esme Povirk (@madewokherd) commented about dlls/gdiplus/pen.c:
+ TRACE("(%p, %p, %i)\n", pen, compoundarray, count);
- if (!pen || !dash || count < 2 || count%2 == 1) + if(!pen || !compoundarray || count < 2 || count%2 == 1 || *compoundarray < 0.0 || *compoundarray > 1.0) return InvalidParameter; + previousValue = *compoundarray;
- return NotImplemented; + for(size_t i = 1; i<count; i++) + { + if((compoundarray[i] < previousValue) || (compoundarray[i] > 1.0)) + return InvalidParameter; + previousValue = compoundarray[i]; + } + + heap_free(pen->compound_array); I've been told in the past that an old array shouldn't be freed until we have successfully allocated a new array to replace it.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/1164#note_12394