diff options
author | Renato Filho <renato.filho@openbossa.org> | 2011-10-04 16:06:58 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:18:19 -0300 |
commit | 5a5ab030e94ca2b682e5ff48a168ca64ef69812f (patch) | |
tree | 58bf629cf87600bb1635a11a5749fff57474e018 | |
parent | 181a0e9d43c7a95bf78dd0269b357ed4f5ade2a3 (diff) |
Fixed Shiboken::Buffer implementation for python 3.
-rw-r--r-- | libshiboken/shibokenbuffer.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/libshiboken/shibokenbuffer.cpp b/libshiboken/shibokenbuffer.cpp index 5ee2ef774..18ddd861b 100644 --- a/libshiboken/shibokenbuffer.cpp +++ b/libshiboken/shibokenbuffer.cpp @@ -31,20 +31,18 @@ bool Shiboken::Buffer::checkType(PyObject* pyObj) void* Shiboken::Buffer::getPointer(PyObject* pyObj, Py_ssize_t* size) { - const void* buffer = 0; - Py_ssize_t bufferSize = 0; #ifdef IS_PY3K Py_buffer view; - printf("VAI PEGAR O BUFFER\n"); if (PyObject_GetBuffer(pyObj, &view, PyBUF_ND) == 0) { - printf("PEGOU O BUFFER\n"); return view.buf; } else { - printf("FALHA TOTAL\n"); return 0; } #else + const void* buffer = 0; + Py_ssize_t bufferSize = 0; + PyObject_AsReadBuffer(pyObj, &buffer, &bufferSize); if (size) @@ -57,11 +55,12 @@ PyObject* Shiboken::Buffer::newObject(void* memory, Py_ssize_t size, Type type) { #ifdef IS_PY3K Py_buffer view; - memset(&view, 0, sizeof(view)); + memset(&view, 0, sizeof(Py_buffer)); view.buf = memory; view.len = size; view.readonly = type == Shiboken::Buffer::ReadOnly; view.ndim = 1; + view.itemsize = sizeof(char); Py_ssize_t shape[] = { size }; view.shape = shape; return PyMemoryView_FromBuffer(&view); |