Make handle initialization explicit

This commit is contained in:
Kovid Goyal 2021-04-22 21:25:51 +05:30
parent d152d5d62d
commit 51d37960b1
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -43,11 +43,11 @@ class generic_raii {
class wchar_raii : public generic_raii<wchar_t*, PyMem_Free> { class wchar_raii : public generic_raii<wchar_t*, PyMem_Free> {
public: public:
explicit wchar_raii() noexcept {} explicit wchar_raii() noexcept { handle = NULL; }
explicit wchar_raii(wchar_t *h) noexcept {} explicit wchar_raii(wchar_t *h) noexcept { handle = h; }
explicit wchar_raii(PyObject *unicode_object) noexcept { explicit wchar_raii(PyObject *unicode_object) noexcept {
if (!unicode_object || !PyUnicode_Check(unicode_object)) { PyErr_SetString(PyExc_TypeError, "Not a unicode object"); return; } if (!unicode_object || !PyUnicode_Check(unicode_object)) { handle = NULL; PyErr_SetString(PyExc_TypeError, "Not a unicode object"); }
handle = PyUnicode_AsWideCharString(unicode_object, NULL); else handle = PyUnicode_AsWideCharString(unicode_object, NULL);
} }
}; };
static inline void python_object_destructor(void *p) { PyObject *x = reinterpret_cast<PyObject*>(p); Py_XDECREF(x); } static inline void python_object_destructor(void *p) { PyObject *x = reinterpret_cast<PyObject*>(p); Py_XDECREF(x); }