Commit: 4e31b5b1738cc36ee66421ecd16dc1662464ca89
Author: Bastien Montagne
Date:   Wed Aug 12 10:50:19 2020 +0200
Branches: blender-v2.90-release
https://developer.blender.org/rB4e31b5b1738cc36ee66421ecd16dc1662464ca89

Fix (unreported) broken Poll function of GPencile mods and ShaderFX operators 
in liboverride case.

Those where assuming we always get a valid modifier data from context,
which is not always true...

Also  fix similar issue with shortcuts as reported in T79635.

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

M       source/blender/editors/object/object_gpencil_modifier.c
M       source/blender/editors/object/object_shader_fx.c

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

diff --git a/source/blender/editors/object/object_gpencil_modifier.c 
b/source/blender/editors/object/object_gpencil_modifier.c
index 019ab2c345b..ab1de9e20ec 100644
--- a/source/blender/editors/object/object_gpencil_modifier.c
+++ b/source/blender/editors/object/object_gpencil_modifier.c
@@ -416,6 +416,7 @@ static int gpencil_edit_modifier_poll_generic(bContext *C, 
StructRNA *rna_type,
 {
   PointerRNA ptr = CTX_data_pointer_get_type(C, "modifier", rna_type);
   Object *ob = (ptr.owner_id) ? (Object *)ptr.owner_id : 
ED_object_active_context(C);
+  GpencilModifierData *mod = ptr.data; /* May be NULL. */
 
   if (!ob || ID_IS_LINKED(ob)) {
     return 0;
@@ -428,9 +429,10 @@ static int gpencil_edit_modifier_poll_generic(bContext *C, 
StructRNA *rna_type,
   }
 
   if (ID_IS_OVERRIDE_LIBRARY(ob)) {
-    CTX_wm_operator_poll_msg_set(C, "Cannot edit modifiers coming from library 
override");
-    return (((GpencilModifierData *)ptr.data)->flag &
-            eGpencilModifierFlag_OverrideLibrary_Local) != 0;
+    if ((mod == NULL) || (mod->flag & 
eGpencilModifierFlag_OverrideLibrary_Local) == 0) {
+      CTX_wm_operator_poll_msg_set(C, "Cannot edit modifiers coming from 
library override");
+      return 0;
+    }
   }
 
   return 1;
diff --git a/source/blender/editors/object/object_shader_fx.c 
b/source/blender/editors/object/object_shader_fx.c
index 977d4abd4d4..9cfba767dad 100644
--- a/source/blender/editors/object/object_shader_fx.c
+++ b/source/blender/editors/object/object_shader_fx.c
@@ -332,6 +332,7 @@ static bool edit_shaderfx_poll_generic(bContext *C, 
StructRNA *rna_type, int obt
 {
   PointerRNA ptr = CTX_data_pointer_get_type(C, "shaderfx", rna_type);
   Object *ob = (ptr.owner_id) ? (Object *)ptr.owner_id : 
ED_object_active_context(C);
+  ShaderFxData *fx = ptr.data; /* May be NULL. */
 
   if (!ob || ID_IS_LINKED(ob)) {
     return 0;
@@ -344,8 +345,10 @@ static bool edit_shaderfx_poll_generic(bContext *C, 
StructRNA *rna_type, int obt
   }
 
   if (ID_IS_OVERRIDE_LIBRARY(ob)) {
-    CTX_wm_operator_poll_msg_set(C, "Cannot edit shaderfxs coming from library 
override");
-    return (((ShaderFxData *)ptr.data)->flag & 
eShaderFxFlag_OverrideLibrary_Local) != 0;
+    if ((fx == NULL) || (fx->flag & eShaderFxFlag_OverrideLibrary_Local) == 0) 
{
+      CTX_wm_operator_poll_msg_set(C, "Cannot edit shaderfxs coming from 
library override");
+      return 0;
+    }
   }
 
   return 1;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to