Review Request 108708: fix possibly broken rect size calculation in Krita blur filters

Friedrich W. H. Kossebau kossebau at kde.org
Sun Feb 3 01:14:41 GMT 2013



> On Feb. 2, 2013, 9:44 p.m., Boudewijn Rempt wrote:
> > Yeah... If msvc warns about it, but I do think it's silly :-). Anyway, I still need to test, but I'm sure it's fine, it doesn't alter what we meant with the code.

I was surprised as well, but really operator-() on an unsigned int only result in the 2-complement.
--- 8< ---
#include <iostream>

int main()
{
    int a = 5;
    unsigned int b = 5;

    std::cout <<"int: "<< (-a)<<" uint: "<< (-b) << std::endl;
}
--- 8< ---
$ g++ test.cpp -o test
$ ./test 
int: -5 uint: 4294967291


- Friedrich W. H.


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/108708/#review26549
-----------------------------------------------------------


On Feb. 2, 2013, 12:49 a.m., Friedrich W. H. Kossebau wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/108708/
> -----------------------------------------------------------
> 
> (Updated Feb. 2, 2013, 12:49 a.m.)
> 
> 
> Review request for Calligra and Boudewijn Rempt.
> 
> 
> Description
> -------
> 
> MSVC hints in its warnings that using operator-() on an unsigned int will still result in an unsigned int.
> Reading up the intertubes on that it seems to be usually the 2's complement of the value.
> So all the rect calculations in these blur filter must have been giving strange results for quite some time.
> 
> Is that true? Nobody saw that?
> 
> Attached patch fixes that by always turning the values used for calculations into signed integer, by the implicit conversion coming with the assignment.
> 
> Other possible fixes would be to simply switch the operator-() usage into a -1* operation. Not sure what I prefer, your choice :)
> 
> 
> Diffs
> -----
> 
>   krita/plugins/filters/blur/kis_blur_filter.cpp b81f0bd 
>   krita/plugins/filters/blur/kis_gaussian_blur_filter.cpp 0c68562 
>   krita/plugins/filters/blur/kis_motion_blur_filter.cpp 6a13ca3 
> 
> Diff: http://git.reviewboard.kde.org/r/108708/diff/
> 
> 
> Testing
> -------
> 
> None, as I have no clue of the blur filters and how to see the effect of the patch. Left for Krita insiders.
> 
> 
> Thanks,
> 
> Friedrich W. H. Kossebau
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/calligra-devel/attachments/20130203/0e4163e9/attachment.htm>


More information about the calligra-devel mailing list