[Bf-blender-cvs] [e3fd455] multi_previews_id: Somewhat gracefully handle frame index out of bound error.

Sybren A. Stüvel noreply at git.blender.org
Fri Nov 11 17:34:15 CET 2016


Commit: e3fd455d3293f7b8bd15491a3e0193002b648abf
Author: Sybren A. Stüvel
Date:   Fri Nov 11 17:31:24 2016 +0100
Branches: multi_previews_id
https://developer.blender.org/rBe3fd455d3293f7b8bd15491a3e0193002b648abf

Somewhat gracefully handle frame index out of bound error.

@mont29 We should look at how we handle this properly; I think that the
printf() causes too much console noise.

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

M	source/blender/blenkernel/intern/icons.c
M	source/blender/editors/interface/interface_icons.c

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

diff --git a/source/blender/blenkernel/intern/icons.c b/source/blender/blenkernel/intern/icons.c
index 838a732..7ba2eee 100644
--- a/source/blender/blenkernel/intern/icons.c
+++ b/source/blender/blenkernel/intern/icons.c
@@ -283,7 +283,12 @@ void BKE_previewimg_frame_delete(struct PreviewImage *prv, const short frame_idx
 unsigned int *BKE_previewimg_frame_data_get(
         const PreviewImage *prv, const unsigned short frame_idx, const enum eIconSizes size, int *r_meta)
 {
-	BLI_assert(prv != NULL && frame_idx < prv->num_frames);
+	BLI_assert(prv != NULL);
+
+	if (frame_idx >= prv->num_frames) {
+		printf("BKE_previewimg_frame_data_get: requested frame %i of %i\n", frame_idx, prv->num_frames);
+		return NULL;
+	}
 
 	unsigned int *frame = NULL;
 	if (r_meta) {
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index 20ceb09..405125f 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -1370,7 +1370,10 @@ static void icon_draw_size(
 
 			if (frame_idx > 0) {
 				unsigned int *rect = BKE_previewimg_frame_data_get(pi, frame_idx, size, NULL);
-				icon_draw_rect(x, y, w, h, aspect, pi->w[size], pi->h[size], rect, alpha, rgb, is_preview);
+				if (rect) {
+					/* TODO: just prevent this NULL pointer in the first place */
+					icon_draw_rect(x, y, w, h, aspect, pi->w[size], pi->h[size], rect, alpha, rgb, is_preview);
+				}
 			}
 			else {
 				icon_draw_rect(x, y, w, h, aspect, pi->w[size], pi->h[size], pi->rect[size], alpha, rgb, is_preview);




More information about the Bf-blender-cvs mailing list