diff --git a/lldb/bindings/python/python-typemaps.h b/lldb/bindings/python/python-typemaps.h deleted file mode 100644 index 8a533e822988e..0000000000000 --- a/lldb/bindings/python/python-typemaps.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef LLDB_BINDINGS_PYTHON_PYTHON_TYPEMAPS_H -#define LLDB_BINDINGS_PYTHON_PYTHON_TYPEMAPS_H - -#include - -// Defined here instead of a .swig file because SWIG 2 doesn't support -// explicit deleted functions. -struct Py_buffer_RAII { - Py_buffer buffer = {}; - Py_buffer_RAII(){}; - Py_buffer &operator=(const Py_buffer_RAII &) = delete; - Py_buffer_RAII(const Py_buffer_RAII &) = delete; - ~Py_buffer_RAII() { - if (buffer.obj) - PyBuffer_Release(&buffer); - } -}; - -#endif // LLDB_BINDINGS_PYTHON_PYTHON_TYPEMAPS_H diff --git a/lldb/bindings/python/python-typemaps.swig b/lldb/bindings/python/python-typemaps.swig index 4d3a95768f2f3..841162beb4e30 100644 --- a/lldb/bindings/python/python-typemaps.swig +++ b/lldb/bindings/python/python-typemaps.swig @@ -6,12 +6,6 @@ AND call SWIG_fail at the same time, because it will result in a double free. */ -%inline %{ - -#include "../bindings/python/python-typemaps.h" - -%} - %typemap(in) char ** { /* Check if is a list */ if (PythonList::Check($input)) { @@ -634,12 +628,21 @@ template <> bool SetNumberFromPyObject(double &number, PyObject *obj) { } } -// These two pybuffer macros are copied out of swig/Lib/python/pybuffer.i, +#if SWIG_VERSION < 0x040100 +// The two pybuffer macros below are copied out of swig/Lib/python/pybuffer.i, // and fixed so they will not crash if PyObject_GetBuffer fails. // https://github.com/swig/swig/issues/1640 -// -// I've also moved the call to PyBuffer_Release to the end of the SWIG wrapper, -// doing it right away is not legal according to the python buffer protocol. + +struct Py_buffer_RAII { + Py_buffer buffer = {}; + Py_buffer_RAII(){}; + Py_buffer &operator=(const Py_buffer_RAII &) = delete; + Py_buffer_RAII(const Py_buffer_RAII &) = delete; + ~Py_buffer_RAII() { + if (buffer.obj) + PyBuffer_Release(&buffer); + } +}; %define %pybuffer_mutable_binary(TYPEMAP, SIZE) %typemap(in) (TYPEMAP, SIZE) (Py_buffer_RAII view) { @@ -674,6 +677,9 @@ template <> bool SetNumberFromPyObject(double &number, PyObject *obj) { $2 = ($2_ltype)(size / sizeof($*1_type)); } %enddef +#else +%include +#endif %pybuffer_binary(const uint8_t *buf, size_t num_bytes); %pybuffer_mutable_binary(uint8_t *buf, size_t num_bytes);