[virt-tools-list] [virt-viewer][PATCH 2/2] coverity: result is not floating-point
Fabiano Fidencio
ffidenci at redhat.com
Mon Aug 17 23:41:28 UTC 2015
On Mon, Aug 17, 2015 at 6:08 PM, Pavel Grunt <pgrunt at redhat.com> wrote:
> On Mon, 2015-08-17 at 17:55 +0200, Fabiano Fidêncio wrote:
> > Coverity says:
> > Result is not floating-point (UNINTENDED_INTEGER_DIVISION)
> > interger_division: Dividing integer expressions "preferred->width * 100"
> > and "zoom", and then converting the integer quotient to type double. Any
> > remainder, or fractional part of the quotient, is ignored.
>
> I think it is better to remove the round(), otherwise you are changing the
> behavior (which is there since 33614f86db490364339ef69e0eb76f98a4ac8138).
>
I don't see why I am (wrongly) changing the behavior, Pavel.
Can you give me an example?
Nowadays, using the round or not using the round would end up in the same
result and I don't think it's the expected/correct behavior.
Let's consider: width = 640, NORMAL_ZOOM_LEVEL = 100, zoom = 85.
Current behavior:
width = round (640*100/85)
width = round (752)
width = 752.
Removing the round:
width = 640*100/85
width = 752
What I consider the expected behavior:
width = round (640*100/85)
width = round (752.94)
width = 753
> Or is the rounding necessary ?
>
I do think so.
>
> Pavel
> > ---
> > src/virt-viewer-display.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/virt-viewer-display.c b/src/virt-viewer-display.c
> > index 3efe24c..8431ae4 100644
> > --- a/src/virt-viewer-display.c
> > +++ b/src/virt-viewer-display.c
> > @@ -819,8 +819,8 @@ void
> > virt_viewer_display_get_preferred_monitor_geometry(VirtViewerDisplay*
> self,
> > if (virt_viewer_display_get_zoom(VIRT_VIEWER_DISPLAY(self))) {
> > guint zoom =
> > virt_viewer_display_get_zoom_level(VIRT_VIEWER_DISPLAY(self));
> >
> > - preferred->width = round(preferred->width * NORMAL_ZOOM_LEVEL /
> > zoom);
> > - preferred->height = round(preferred->height * NORMAL_ZOOM_LEVEL
> /
> > zoom);
> > + preferred->width = round(preferred->width * NORMAL_ZOOM_LEVEL /
> > (double) zoom);
> > + preferred->height = round(preferred->height * NORMAL_ZOOM_LEVEL
> /
> > (double) zoom);
> > }
> > }
> >
>
Thanks for the review,
--
Fabiano Fidêncio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/virt-tools-list/attachments/20150818/46c60e64/attachment.htm>
More information about the virt-tools-list
mailing list