Przeglądaj źródła

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
Marcus Nilsson 4 lat temu
rodzic
commit
ee48dac300
1 zmienionych plików z 4 dodań i 1 usunięć
  1. 4 1
      Userland/Libraries/LibGfx/Bitmap.cpp

+ 4 - 1
Userland/Libraries/LibGfx/Bitmap.cpp

@@ -427,7 +427,10 @@ RefPtr<Gfx::Bitmap> Bitmap::scaled(float sx, float sy) const
     if (floorf(sx) == sx && floorf(sy) == sy)
         return scaled(static_cast<int>(sx), static_cast<int>(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;