[Bf-blender-cvs] [ec305ea91fd] blender2.8: Fix assert/crash when copying RGBA color into RGB

Dalai Felinto noreply at git.blender.org
Thu Oct 18 18:17:51 CEST 2018


Commit: ec305ea91fd57302e44297c1d9bc9a9771ee6376
Author: Dalai Felinto
Date:   Thu Oct 18 14:40:27 2018 +0000
Branches: blender2.8
https://developer.blender.org/rBec305ea91fd57302e44297c1d9bc9a9771ee6376

Fix assert/crash when copying RGBA color into RGB

For example, copy from viewport display color into brush color.

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

M	source/blender/editors/interface/interface_handlers.c

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

diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index b883984a702..3f55cd5d731 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -2214,11 +2214,17 @@ static void ui_but_paste_color(bContext *C, uiBut *but, char *buf_paste)
 {
 	float rgba[4];
 	if (parse_float_array(buf_paste, rgba, 4)) {
-		/* assume linear colors in buffer */
-		if (but->rnaprop && RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) {
-			linearrgb_to_srgb_v3_v3(rgba, rgba);
+		if (but->rnaprop) {
+			/* Assume linear colors in buffer. */
+			if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) {
+				linearrgb_to_srgb_v3_v3(rgba, rgba);
+			}
+
+			/* Some color properties are RGB, not RGBA. */
+			int array_len = get_but_property_array_length(but);
+			BLI_assert(ELEM(array_len, 3, 4));
+			ui_but_set_float_array(C, but, NULL, rgba, array_len);
 		}
-		ui_but_set_float_array(C, but, NULL, rgba, 4);
 	}
 	else {
 		WM_report(RPT_ERROR, "Paste expected 4 numbers, formatted: '[n, n, n, n]'");



More information about the Bf-blender-cvs mailing list