[Bf-blender-cvs] [feea852b10e] master: Fix crash passing no arguments to Context.temp_override

Campbell Barton noreply at git.blender.org
Wed Apr 20 05:03:29 CEST 2022


Commit: feea852b10eaec8913d789e5b2609b77c281b673
Author: Campbell Barton
Date:   Wed Apr 20 13:01:14 2022 +1000
Branches: master
https://developer.blender.org/rBfeea852b10eaec8913d789e5b2609b77c281b673

Fix crash passing no arguments to Context.temp_override

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

M	source/blender/python/intern/bpy_rna_context.c

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

diff --git a/source/blender/python/intern/bpy_rna_context.c b/source/blender/python/intern/bpy_rna_context.c
index 085a8323cc1..811552ce938 100644
--- a/source/blender/python/intern/bpy_rna_context.c
+++ b/source/blender/python/intern/bpy_rna_context.c
@@ -208,10 +208,17 @@ static PyObject *bpy_context_temp_override(PyObject *self, PyObject *args, PyObj
   if (context_ptr == NULL) {
     return NULL;
   }
-  /* Needed because the keywords copied into `kwds_parse` could contain anything.
-   * As the types of keys aren't checked. */
-  if (!PyArg_ValidateKeywordArguments(kwds)) {
-    return NULL;
+
+  if (kwds == NULL) {
+    /* While this is effectively NOP, support having no keywords as it's more involved
+     * to return an alternative (dummy) context manager. */
+  }
+  else {
+    /* Needed because the keywords copied into `kwds_parse` could contain anything.
+     * As the types of keys aren't checked. */
+    if (!PyArg_ValidateKeywordArguments(kwds)) {
+      return NULL;
+    }
   }
 
   struct {
@@ -235,7 +242,7 @@ static PyObject *bpy_context_temp_override(PyObject *self, PyObject *args, PyObj
       0,
   };
   /* Parse known keywords, the remaining keywords are set using #CTX_py_state_push. */
-  kwds = PyDict_Copy(kwds);
+  kwds = kwds ? PyDict_Copy(kwds) : PyDict_New();
   {
     PyObject *kwds_parse = bpy_context_temp_override_extract_known_args(_keywords, kwds);
     const int parse_result = _PyArg_ParseTupleAndKeywordsFast(args,



More information about the Bf-blender-cvs mailing list