Hi, I was trying to compile matplotlib against current trunk, and hit an error with this line:
char* row0 = PyArray_BYTES(matrix); https://github.com/matplotlib/matplotlib/blob/master/src/agg_py_transforms.cpp The error is: src/agg_py_transforms.cpp:30:26: error: invalid conversion from ‘void*’ to ‘char*’ It turned out that the output type of PyArray_BYTES has changed between 1.5.1 and current trunk In 1.5.1, ndarraytypes.h: #define PyArray_BYTES(obj) (((PyArrayObject *)(obj))->data) (resulting in a char *, from the char * bytes member of PyArrayObject) In current trunk we have this: #define PyArray_BYTES(arr) PyArray_DATA(arr) ifndef NPY_NO_DEPRECATED_API then this results in: #define PyArray_DATA(obj) ((void *)(((PyArrayObject_fieldaccess *)(obj))->data)) giving a void * ifdef NPY_NO_DEPRECATED_API then: static NPY_INLINE char * PyArray_DATA(PyArrayObject *arr) { return ((PyArrayObject_fieldaccess *)arr)->data; } resulting in a char * (for both PyArray_DATA and PyArray_BYTES. It seems to me that it would be safer to add back this line: #define PyArray_BYTES(obj) (((PyArrayObject *)(obj))->data) to ndarraytypes.h , within the ifndef NPY_NO_DEPRECATED_API block, to maintain compatibility. Do y'all agree? Best, Matthew _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion