<div dir="ltr">If the comparison fails, the returned values are modulus fixed_16_16, rather than clamped. I think that gives a lot less possibilities for the calling code to recover from or simulate the results of the out-of-range value.<div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 29, 2016 at 6:33 AM, Emil Velikov <span dir="ltr"><<a href="mailto:emil.l.velikov@gmail.com" target="_blank">emil.l.velikov@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 29 April 2016 at 11:35, Pekka Paalanen <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote:<br>
> On Fri, 29 Apr 2016 10:15:37 +0100<br>
> Emil Velikov <<a href="mailto:emil.l.velikov@gmail.com">emil.l.velikov@gmail.com</a>> wrote:<br>
><br>
>> On 27 April 2016 at 18:46, Bill Spitzak <<a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a>> wrote:<br>
>> > On Wed, Apr 27, 2016 at 2:03 AM, Pekka Paalanen <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote:<br>
>> >><br>
>> >> On Wed, 27 Apr 2016 09:56:44 +0100<br>
>> >> Emil Velikov <<a href="mailto:emil.l.velikov@gmail.com">emil.l.velikov@gmail.com</a>> wrote:<br>
>> >><br>
>> >> > On 26 April 2016 at 19:12, Bill Spitzak <<a href="mailto:spitzak@gmail.com">spitzak@gmail.com</a>> wrote:<br>
>> >> > > The old code is comparing pixman_fixed_48_16_t values to<br>
>> >> > > pixman_fixed_16_16_t values, thus it is checking for truncation of<br>
>> >> > > overflow<br>
>> >> > > values.<br>
>> >> > ><br>
>> >> > Indeed it does. I'll grep more before asking silly questions ;-)<br>
>> >> ><br>
>> >> > > It would probably be better to clamp these overflowed values, like<br>
>> >> > > pixman_transform_point_31_16 is doing to clamp to the<br>
>> >> > > pixman_fixed_48_16<br>
>> >> > > result. Right now the result is an odd mix of clamping and modulus. A<br>
>> >> > > rewrite to go directly to clamped pixman_fixed_16_16 values would be<br>
>> >> > > even<br>
>> >> > > better.<br>
>> >> > ><br>
>> >> > Sounds like a plan. Sadly I doubt I'll get to it any time soon.<br>
>> >><br>
>> >> Wasn't the point of the boolean return from these functions to tell the<br>
>> >> caller to drop what it is doing because it cannot be done properly?<br>
>> ><br>
>> ><br>
>> > Dropping a fill is a lot worse than trying to simulate it using the clamped<br>
>> > path. It will produce a wrong result if one of the edges connected to a<br>
>> > clamped point passes through the clip, but this often does not happen, and<br>
>> > the transition to the wrong result is gradual as the point moves outside the<br>
>> > clamped region.<br>
>> ><br>
>> > More importantly the caller cannot do anything with the return values right<br>
>> > now, as they are modulus MAX_16_16+1. Even the direction they are in is<br>
>> > lost.<br>
>> ><br>
>> I think that keeping the user provided memory as-is when the function<br>
>> does not succeed is a good idea.<br>
>> Afaics currently the contents get overwritten regardless of the result.<br>
>><br>
>> This is what you guys were on about, right ? Or perhaps you're<br>
>> thinking about spinning v2 of the function with different<br>
>> signature/behaviour ?<br>
><br>
> Hi Emil,<br>
><br>
> I think the conclusion was that the comparisons are not useless, and<br>
> this patch should be dropped. You noted it yourself that this patch<br>
> causes a regression in the test suite.<br>
><br>
</div></div>Fully agree on both points. Just trying to understand what you and<br>
Bill are talking about and suggest that if one changes things, would<br>
be nice to avoid "feeding garbage" back to the user [on error].<br>
<br>
Thanks<br>
<span class="HOEnZb"><font color="#888888">Emil<br>
</font></span></blockquote></div><br></div>