From b9035c8ad758af7e5868817eb71454b045947a48 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Sat, 2 Nov 2019 11:35:35 -0400 Subject: [PATCH] [TD]fix py2 unicode/string handling --- src/Mod/TechDraw/App/AppTechDrawPy.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Mod/TechDraw/App/AppTechDrawPy.cpp b/src/Mod/TechDraw/App/AppTechDrawPy.cpp index fa6716c685..c0c1a4328c 100644 --- a/src/Mod/TechDraw/App/AppTechDrawPy.cpp +++ b/src/Mod/TechDraw/App/AppTechDrawPy.cpp @@ -762,10 +762,17 @@ private: try { Py::Sequence list(pEdgeList); for (Py::Sequence::iterator it = list.begin(); it != list.end(); ++it) { +#if PY_MAJOR_VERSION >= 3 if (PyUnicode_Check((*it).ptr())) { std::string temp = PyUnicode_AsUTF8((*it).ptr()); edgeList.push_back(temp); } +#else + if (PyString_Check((*it).ptr())) { + std::string temp = PyString_AsString((*it).ptr()); //py2 only!!! + edgeList.push_back(temp); + } +#endif } } catch (Standard_Failure& e) { @@ -798,9 +805,16 @@ private: App::DocumentObject* obj = static_cast(pDvp)->getDocumentObjectPtr(); dvp = static_cast(obj); } - if (PyUnicode_Check(pDimType)) { +#if PY_MAJOR_VERSION >= 3 + if (PyUnicode_Check(pDimType) ) { dimType = PyUnicode_AsUTF8(pDimType); } +#else + if (PyString_Check(pDimType) ) { + dimType = PyString_AsString(pDimType); + } +#endif + if (PyObject_TypeCheck(pFrom, &(Base::VectorPy::Type))) { from = static_cast(pFrom)->value(); } @@ -834,9 +848,15 @@ private: App::DocumentObject* obj = static_cast(pDvp)->getDocumentObjectPtr(); dvp = static_cast(obj); } +#if PY_MAJOR_VERSION >= 3 if (PyUnicode_Check(pDimType)) { dimType = PyUnicode_AsUTF8(pDimType); } +#else + if (PyString_Check(pDimType)) { + dimType = PyString_AsString(pDimType); + } +#endif if (PyObject_TypeCheck(pFrom, &(Base::VectorPy::Type))) { from = static_cast(pFrom)->value(); }