From 59b77cd68848e56461c36287eba713079135f071 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') diff --git a/source/blender/python/intern/bpy_rna_id_collection.c b/source/blender/python/intern/bpy_rna_id_collection.c index d4127b26629..c5ae494fabd 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