[Bf-blender-cvs] [8f66d6826b2] master: Cycles: Fix crashes after recent image changes

Mai Lavelle noreply at git.blender.org
Sat Apr 29 00:54:53 CEST 2017


Commit: 8f66d6826b2824fac7b637fce8b396fe0ec18711
Author: Mai Lavelle
Date:   Fri Apr 28 18:47:47 2017 -0400
Branches: master
https://developer.blender.org/rB8f66d6826b2824fac7b637fce8b396fe0ec18711

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...

===================================================================

M	intern/cycles/render/image.cpp

===================================================================

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;




More information about the Bf-blender-cvs mailing list