From 574995478aca96d524fe2f34d555d3de64c0697e Mon Sep 17 00:00:00 2001 From: Yann Lanthony Date: Thu, 22 Jul 2021 12:46:54 +0200 Subject: Fix T89733: Py API: bpy.data.orphans_purge argument parsing On Windows, using `bpy.data.orphans_purge` with some arguments (eg: `do_recursive=True`) does not produce the expected results. This is due to arguments not being parsed correctly on this platform with the current code. The proposed fix is based on how other functions with boolean attributes are exposed to the Python API. Reviewed By: #python_api, mont29 Maniphest Tasks: T89733 Differential Revision: https://developer.blender.org/D11963 --- source/blender/python/intern/bpy_rna_id_collection.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'source/blender/python') diff --git a/source/blender/python/intern/bpy_rna_id_collection.c b/source/blender/python/intern/bpy_rna_id_collection.c index 66044311321..1bb68babc3c 100644 --- a/source/blender/python/intern/bpy_rna_id_collection.c +++ b/source/blender/python/intern/bpy_rna_id_collection.c @@ -377,9 +377,16 @@ static PyObject *bpy_orphans_purge(PyObject *UNUSED(self), PyObject *args, PyObj bool do_recursive_cleanup = false; static const char *_keywords[] = {"do_local_ids", "do_linked_ids", "do_recursive", NULL}; - static _PyArg_Parser _parser = {"|$ppp:orphans_purge", _keywords, 0}; - if (!_PyArg_ParseTupleAndKeywordsFast( - args, kwds, &_parser, &do_local_ids, &do_linked_ids, &do_recursive_cleanup)) { + static _PyArg_Parser _parser = {"|O&O&O&:orphans_purge", _keywords, 0}; + if (!_PyArg_ParseTupleAndKeywordsFast(args, + kwds, + &_parser, + PyC_ParseBool, + &do_local_ids, + PyC_ParseBool, + &do_linked_ids, + PyC_ParseBool, + &do_recursive_cleanup)) { return NULL; } -- cgit v1.2.3