imagebox: Avoid division by zero

Given an imagebox i with i.resize_forbidden = false and a valid image set, the
call t:fit(0, 0) would return two times "not a number".

This is because the code first does some calculations to get the input image
into the available space and then tried to do some calculations needed for
scaling images up.

The first calculation already gave us h == 0 == w, the second calculation would
then calculate 0/0. This results in NaNs.

This was only noticed because NaN is not a valid table index in lua.

Fix this by returning 0,0 if we have an image of width or height 0 after the
first calculation. Since 0x0 images are valid in cairo, this also fixes the same
bug with such images.

Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
Uli Schlachter 2014-03-23 17:39:42 +01:00
parent 23432cfaeb
commit 8003156e62
1 changed files with 4 additions and 0 deletions

View File

@ -55,6 +55,10 @@ function imagebox:fit(width, height)
h = height h = height
end end
if h == 0 or w == 0 then
return 0, 0
end
if not self.resize_forbidden then if not self.resize_forbidden then
local aspect = width / w local aspect = width / w
local aspect_h = height / h local aspect_h = height / h