[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