Fix T89868: Crash showing thumbnail of wide-aspect image

Scaling down images could create images with a width or height of zero.

Clamp at 1 to prevent a crash, also add an assert to scaling functions.

Ref D11956
This commit is contained in:
Jesse Yurkovich 2021-07-18 10:42:52 +10:00 committed by Jeroen Bakker
parent c5c4727d6e
commit 0de54a9cfe
Notes: blender-bot 2023-02-14 08:10:10 +01:00
Referenced by issue #89868, Blender crash when showing thumbnail of a strongly skewed .exr image
Referenced by issue #77348, Blender LTS: Maintenance Task 2.83
2 changed files with 9 additions and 2 deletions

View File

@ -1042,8 +1042,9 @@ static void icon_copy_rect(ImBuf *ibuf, uint w, uint h, uint *rect)
scaledy = (float)h;
}
ex = (short)scaledx;
ey = (short)scaledy;
/* Scaling down must never assign zero width/height, see: T89868. */
ex = MAX2(1, (short)scaledx);
ey = MAX2(1, (short)scaledy);
dx = (w - ex) / 2;
dy = (h - ey) / 2;

View File

@ -1618,6 +1618,8 @@ static void scalefast_Z_ImBuf(ImBuf *ibuf, int newx, int newy)
*/
bool IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy)
{
BLI_assert(newx > 0 && newy > 0);
if (ibuf == NULL) {
return false;
}
@ -1664,6 +1666,8 @@ struct imbufRGBA {
*/
bool IMB_scalefastImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy)
{
BLI_assert(newx > 0 && newy > 0);
unsigned int *rect, *_newrect, *newrect;
struct imbufRGBA *rectf, *_newrectf, *newrectf;
int x, y;
@ -1836,6 +1840,8 @@ static void *do_scale_thread(void *data_v)
void IMB_scaleImBuf_threaded(ImBuf *ibuf, unsigned int newx, unsigned int newy)
{
BLI_assert(newx > 0 && newy > 0);
ScaleTreadInitData init_data = {NULL};
/* prepare initialization data */