From 1622079078e5ff06ca028cb29fdad59415079a9e Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 25 Aug 2023 13:17:43 -0500 Subject: [PATCH] Import: Wrap PyArg_ParseTupleAndKeywords --- src/Mod/Import/App/AppImportPy.cpp | 23 +++++++++++++------- src/Mod/Import/Gui/AppImportGuiPy.cpp | 30 ++++++++++++++++----------- 2 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/Mod/Import/App/AppImportPy.cpp b/src/Mod/Import/App/AppImportPy.cpp index 6a2951c266..fd3a62fb18 100644 --- a/src/Mod/Import/App/AppImportPy.cpp +++ b/src/Mod/Import/App/AppImportPy.cpp @@ -62,6 +62,7 @@ #include #include #include +#include #include "dxf/ImpExpDxf.h" #include #include @@ -130,11 +131,14 @@ private: PyObject *merge = Py_None; PyObject *useLinkGroup = Py_None; int mode = -1; - static char* kwd_list[] = {"name", "docName","importHidden","merge","useLinkGroup","mode",nullptr}; - if (!PyArg_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "et|sO!O!O!i", - kwd_list,"utf-8",&Name,&DocName,&PyBool_Type,&importHidden,&PyBool_Type,&merge, - &PyBool_Type,&useLinkGroup,&mode)) + static const std::array kwd_list {"name", "docName", "importHidden", "merge", + "useLinkGroup", "mode", nullptr}; + if (!Base::Wrapped_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "et|sO!O!O!i", + kwd_list, "utf-8", &Name, &DocName, &PyBool_Type, &importHidden, + &PyBool_Type, &merge, + &PyBool_Type, &useLinkGroup, &mode)) { throw Py::Exception(); + } std::string Utf8Name = std::string(Name); PyMem_Free(Name); @@ -274,11 +278,14 @@ private: PyObject *exportHidden = Py_None; PyObject *legacy = Py_None; PyObject *keepPlacement = Py_None; - static char* kwd_list[] = {"obj", "name", "exportHidden", "legacy", "keepPlacement",nullptr}; - if (!PyArg_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "Oet|O!O!O!", - kwd_list,&object,"utf-8",&Name,&PyBool_Type,&exportHidden,&PyBool_Type,&legacy, - &PyBool_Type,&keepPlacement)) + static const std::array kwd_list{"obj", "name", "exportHidden", "legacy", "keepPlacement", + nullptr}; + if (!Base::Wrapped_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "Oet|O!O!O!", + kwd_list, &object, "utf-8", &Name, &PyBool_Type, &exportHidden, + &PyBool_Type, &legacy, + &PyBool_Type, &keepPlacement)) { throw Py::Exception(); + } std::string Utf8Name = std::string(Name); PyMem_Free(Name); diff --git a/src/Mod/Import/Gui/AppImportGuiPy.cpp b/src/Mod/Import/Gui/AppImportGuiPy.cpp index dafa4af60e..6ef4d14b70 100644 --- a/src/Mod/Import/Gui/AppImportGuiPy.cpp +++ b/src/Mod/Import/Gui/AppImportGuiPy.cpp @@ -98,6 +98,7 @@ #include #include #include +#include #include #include #include @@ -381,11 +382,14 @@ private: PyObject *merge = Py_None; PyObject *useLinkGroup = Py_None; int mode = -1; - static char* kwd_list[] = {"name","docName","importHidden","merge","useLinkGroup","mode",nullptr}; - if (!PyArg_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "et|sO!O!O!i", - kwd_list,"utf-8",&Name,&DocName,&PyBool_Type,&importHidden,&PyBool_Type,&merge, - &PyBool_Type,&useLinkGroup,&mode)) + static const std::array kwd_list{"name", "docName", "importHidden", "merge", "useLinkGroup", + "mode", nullptr}; + if (!Base::Wrapped_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "et|sO!O!O!i", + kwd_list, "utf-8", &Name, &DocName, &PyBool_Type, &importHidden, + &PyBool_Type, &merge, + &PyBool_Type, &useLinkGroup, &mode)) { throw Py::Exception(); + } std::string Utf8Name = std::string(Name); PyMem_Free(Name); @@ -569,15 +573,17 @@ private: PyObject *pyexportHidden = Py_None; PyObject *pylegacy = Py_None; PyObject *pykeepPlacement = Py_None; - static char* kwd_list[] = {"obj", "name", "options", "exportHidden", "legacy", "keepPlacement", nullptr}; - if (!PyArg_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "Oet|O!O!O!O!", - kwd_list, &object, - "utf-8", &Name, - &PyDict_Type, &pyoptions, - &PyBool_Type, &pyexportHidden, - &PyBool_Type, &pylegacy, - &PyBool_Type, &pykeepPlacement)) + static const std::array kwd_list{"obj", "name", "options", "exportHidden", "legacy", + "keepPlacement", nullptr}; + if (!Base::Wrapped_ParseTupleAndKeywords(args.ptr(), kwds.ptr(), "Oet|O!O!O!O!", + kwd_list, &object, + "utf-8", &Name, + &PyDict_Type, &pyoptions, + &PyBool_Type, &pyexportHidden, + &PyBool_Type, &pylegacy, + &PyBool_Type, &pykeepPlacement)) { throw Py::Exception(); + } std::string Utf8Name = std::string(Name); PyMem_Free(Name);