From: Stéphane Graber Date: Wed, 24 Apr 2013 15:24:26 +0000 (+0200) Subject: python: Make the code compatibly with 3.2 X-Git-Tag: lxc-1.0.0.alpha1~1^2~269 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15451ecf742bfa38a0732270b36d4a8666d2124e;p=thirdparty%2Flxc.git python: Make the code compatibly with 3.2 The previous change used some 3.3-specific functions. We still support 3.2 so revert to 3.2-compatible calls. Reported-by: S.Çağlar Onur Signed-off-by: Stéphane Graber Acked-by: Serge E. Hallyn --- diff --git a/src/python-lxc/lxc.c b/src/python-lxc/lxc.c index 85710d642..4e9fde7ed 100644 --- a/src/python-lxc/lxc.c +++ b/src/python-lxc/lxc.c @@ -49,18 +49,27 @@ convert_tuple_to_char_pointer_array(PyObject *argv) { assert(pyobj != NULL); char *str = NULL; + PyObject *pystr = NULL; if (!PyUnicode_Check(pyobj)) { PyErr_SetString(PyExc_ValueError, "Expected a string"); goto error; } - str = PyUnicode_AsUTF8(pyobj); - if (!str) { + pystr = PyUnicode_AsUTF8String(pyobj); + if (!pystr) { /* Maybe it wasn't UTF-8 encoded. An exception is already set. */ goto error; } + str = PyBytes_AsString(pystr); + if (!str) { + /* Maybe pystr wasn't a valid object. An exception is already set. + */ + Py_DECREF(pystr); + goto error; + } + /* We must make a copy of str, because it points into internal memory * which we do not own. Assume it's NULL terminated, otherwise we'd * have to use PyUnicode_AsUTF8AndSize() and be explicit about copying @@ -71,6 +80,7 @@ convert_tuple_to_char_pointer_array(PyObject *argv) { /* Do not decref pyobj since we stole a reference by using * PyTuple_GET_ITEM(). */ + Py_DECREF(pystr); if (result[i] == NULL) { PyErr_SetNone(PyExc_MemoryError); goto error;