Florian Weimer <[email protected]> added the comment:
The issue is related to the definition of PyCArgObject:
typedef struct tagPyCArgObject PyCArgObject;
struct tagPyCArgObject {
PyObject_HEAD
ffi_type *pffi_type;
char tag;
union {
char c;
char b;
short h;
int i;
long l;
long long q;
long double D;
double d;
float f;
void *p;
} value;
PyObject *obj;
Py_ssize_t size; /* for the 'V' tag */
};
This object must be allocated with suitable alignment (which is 16 on many
platforms), and the default Python allocator apparently provides 8-byte
alignment only on 64-bit platforms. In short, using PyObject_New with
PyCArgObject results in undefined behavior.
This issue potentially affects all compilers, not just Clang.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue36618>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com