[Bf-blender-cvs] [3464a534770] master: Fix T63255: Crash when circle select performs selection outside the viewport's bounds.

mano-wii noreply at git.blender.org
Thu Apr 4 01:06:38 CEST 2019


Commit: 3464a534770b551c60f43e422024712d0947cd81
Author: mano-wii
Date:   Wed Apr 3 20:05:59 2019 -0300
Branches: master
https://developer.blender.org/rB3464a534770b551c60f43e422024712d0947cd81

Fix T63255: Crash when circle select performs selection outside the viewport's bounds.

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

M	source/blender/draw/intern/draw_manager.c

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

diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 66b5ec22af9..e31c2f5cbbd 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -2561,13 +2561,21 @@ void DRW_framebuffer_select_id_read(const rcti *rect, uint *r_buf)
 	};
 
 	rcti rect_clamp = *rect;
-	BLI_rcti_isect(&r, rect, &rect_clamp);
+	if (BLI_rcti_isect(&r, &rect_clamp, &rect_clamp)) {
+		GPU_texture_read_rect(
+		        g_select_buffer.texture_u32,
+		        GPU_DATA_UNSIGNED_INT, &rect_clamp, r_buf);
 
-	GPU_texture_read_rect(
-	        g_select_buffer.texture_u32, GPU_DATA_UNSIGNED_INT, &rect_clamp, r_buf);
+		if (!BLI_rcti_compare(rect, &rect_clamp)) {
+			GPU_select_buffer_stride_realign(rect, &rect_clamp, r_buf);
+		}
+	}
+	else {
+		size_t buf_size = BLI_rcti_size_x(rect) *
+		                  BLI_rcti_size_y(rect) *
+		                  sizeof(*r_buf);
 
-	if (!BLI_rcti_compare(rect, &rect_clamp)) {
-		GPU_select_buffer_stride_realign(rect, &rect_clamp, r_buf);
+		memset(r_buf, 0, buf_size);
 	}
 }



More information about the Bf-blender-cvs mailing list