This commit is contained in:
Kovid Goyal 2021-04-22 21:30:17 +05:30
parent 51d37960b1
commit ad3f147c56
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 2 additions and 10 deletions

View File

@ -502,7 +502,7 @@ get_files_and_folders(unsigned int level, IPortableDevice *device, CComPtr<IPort
}
for (Py_ssize_t i = 0; i < PyList_GET_SIZE(subfolders.ptr()); i++) {
wchar_raii child_id(PyList_GET_ITEM(subfolders.ptr(), i));
wchar_raii child_id(PyUnicode_AsWideCharString(PyList_GET_ITEM(subfolders.ptr(), i), NULL));
if (!child_id) return false;
if (!get_files_and_folders(level+1, device, content, bulk_properties, child_id.ptr(), callback, ans)) return false;
}

View File

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