From ee48dac3006d172c345133a75958a626847b9aa3 Mon Sep 17 00:00:00 2001 From: Marcus Nilsson Date: Sat, 22 May 2021 00:45:32 +0200 Subject: [PATCH] Bitmap: Don't call Bitmap::create with width/height equal to 0 With very small bitmaps and small scale factor, such as tile.png, the type conversion in the call to Bitmap:create would cause width or height to be 0. Fixes #7352 --- Userland/Libraries/LibGfx/Bitmap.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibGfx/Bitmap.cpp b/Userland/Libraries/LibGfx/Bitmap.cpp index 00dad64630..7a2e3df1a4 100644 --- a/Userland/Libraries/LibGfx/Bitmap.cpp +++ b/Userland/Libraries/LibGfx/Bitmap.cpp @@ -427,7 +427,10 @@ RefPtr Bitmap::scaled(float sx, float sy) const if (floorf(sx) == sx && floorf(sy) == sy) return scaled(static_cast(sx), static_cast(sy)); - auto new_bitmap = Gfx::Bitmap::create(format(), { width() * sx, height() * sy }, scale()); + int scaled_width = (int)ceilf(sx * (float)width()); + int scaled_height = (int)ceilf(sy * (float)height()); + + auto new_bitmap = Gfx::Bitmap::create(format(), { scaled_width, scaled_height }, scale()); if (!new_bitmap) return nullptr;