Fix Crash: Loading Huge Images.
When loading huge images (30k) blender crashed with a buffer overflow. The reason is that determine the length of a buffer was done in 32bit precision and afterwards stored in 64 bit precision. This patch adds a new function to do the correct calculation in 64bit. It should be added to other sections in blender as well. But that should be tested on a per case situation.
This commit is contained in:
@@ -911,7 +911,7 @@ static ImBuf *scaledownx(struct ImBuf *ibuf, int newx)
|
||||
{
|
||||
const int do_rect = (ibuf->rect != NULL);
|
||||
const int do_float = (ibuf->rect_float != NULL);
|
||||
const size_t rect_size = ibuf->x * ibuf->y * 4;
|
||||
const size_t rect_size = IMB_get_rect_len(ibuf) * 4;
|
||||
|
||||
uchar *rect, *_newrect, *newrect;
|
||||
float *rectf, *_newrectf, *newrectf;
|
||||
@@ -1052,7 +1052,7 @@ static ImBuf *scaledowny(struct ImBuf *ibuf, int newy)
|
||||
{
|
||||
const int do_rect = (ibuf->rect != NULL);
|
||||
const int do_float = (ibuf->rect_float != NULL);
|
||||
const size_t rect_size = ibuf->x * ibuf->y * 4;
|
||||
const size_t rect_size = IMB_get_rect_len(ibuf) * 4;
|
||||
|
||||
uchar *rect, *_newrect, *newrect;
|
||||
float *rectf, *_newrectf, *newrectf;
|
||||
|
||||
Reference in New Issue
Block a user