aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRenato Filho <renato.filho@openbossa.org>2011-10-04 16:06:58 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:18:19 -0300
commit5a5ab030e94ca2b682e5ff48a168ca64ef69812f (patch)
tree58bf629cf87600bb1635a11a5749fff57474e018
parent181a0e9d43c7a95bf78dd0269b357ed4f5ade2a3 (diff)
Fixed Shiboken::Buffer implementation for python 3.
-rw-r--r--libshiboken/shibokenbuffer.cpp11
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);