[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