Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/intern
diff options
context:
space:
mode:
authorMai Lavelle <mai.lavelle@gmail.com>2017-04-29 01:47:47 +0300
committerMai Lavelle <mai.lavelle@gmail.com>2017-04-29 01:54:18 +0300
commit8f66d6826b2824fac7b637fce8b396fe0ec18711 (patch)
tree1714f2d9bebadc236ce560c10c8db2f5d54b67fa /intern
parentd6963630dc64e94b4f2da21d43c1985f77be88aa (diff)
Cycles: Fix crashes after recent image changes
Not sure if this is a proper fix, but was getting frequent crashes, so committing this real quick just to make master sable again. Can be reverted later if there's a better fix. The changes to images really need a closer look...
Diffstat (limited to 'intern')
-rw-r--r--intern/cycles/render/image.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index 04c86732622..d26ea3e14e0 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -888,26 +888,44 @@ void ImageManager::device_free_image(Device *device, DeviceScene *dscene, ImageD
device_memory *tex_img = NULL;
switch(type) {
case IMAGE_DATA_TYPE_FLOAT4:
+ if(slot >= dscene->tex_float4_image.size()) {
+ break;
+ }
tex_img = dscene->tex_float4_image[slot];
dscene->tex_float4_image[slot] = NULL;
break;
case IMAGE_DATA_TYPE_BYTE4:
+ if(slot >= dscene->tex_byte4_image.size()) {
+ break;
+ }
tex_img = dscene->tex_byte4_image[slot];
dscene->tex_byte4_image[slot]= NULL;
break;
case IMAGE_DATA_TYPE_HALF4:
+ if(slot >= dscene->tex_half4_image.size()) {
+ break;
+ }
tex_img = dscene->tex_half4_image[slot];
dscene->tex_half4_image[slot]= NULL;
break;
case IMAGE_DATA_TYPE_FLOAT:
+ if(slot >= dscene->tex_float_image.size()) {
+ break;
+ }
tex_img = dscene->tex_float_image[slot];
dscene->tex_float_image[slot] = NULL;
break;
case IMAGE_DATA_TYPE_BYTE:
+ if(slot >= dscene->tex_byte_image.size()) {
+ break;
+ }
tex_img = dscene->tex_byte_image[slot];
dscene->tex_byte_image[slot]= NULL;
break;
case IMAGE_DATA_TYPE_HALF:
+ if(slot >= dscene->tex_half_image.size()) {
+ break;
+ }
tex_img = dscene->tex_half_image[slot];
dscene->tex_half_image[slot]= NULL;
break;