Prevent upscaled SVG from exceeding Image bounds

Also expose Image MAX_WIDTH and MAX_HEIGHT.

Fixes #24455.
This commit is contained in:
Rémi Verschelde
2019-01-28 15:33:56 +01:00
parent 89e7c2cb13
commit cc0842f9a6
4 changed files with 18 additions and 4 deletions

View File

@ -109,7 +109,12 @@ Error ImageLoaderSVG::_create_image(Ref<Image> p_image, const PoolVector<uint8_t
float upscale = upsample ? 2.0 : 1.0;
int w = (int)(svg_image->width * p_scale * upscale);
ERR_EXPLAIN(vformat("Can't create image from SVG with scale %s, the resulting image size exceeds max width.", rtos(p_scale)));
ERR_FAIL_COND_V(w > Image::MAX_WIDTH, ERR_PARAMETER_RANGE_ERROR);
int h = (int)(svg_image->height * p_scale * upscale);
ERR_EXPLAIN(vformat("Can't create image from SVG with scale %s, the resulting image size exceeds max height.", rtos(p_scale)));
ERR_FAIL_COND_V(h > Image::MAX_HEIGHT, ERR_PARAMETER_RANGE_ERROR);
PoolVector<uint8_t> dst_image;
dst_image.resize(w * h * 4);