]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
python: Make the code compatibly with 3.2
authorStéphane Graber <stgraber@ubuntu.com>
Wed, 24 Apr 2013 15:24:26 +0000 (17:24 +0200)
committerStéphane Graber <stgraber@ubuntu.com>
Wed, 24 Apr 2013 16:47:42 +0000 (18:47 +0200)
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 <caglar@10ur.org>
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
src/python-lxc/lxc.c

index 85710d642db7697ab1b7a34b9ac456fc9d63cf2c..4e9fde7ed525d58679a3c4ce3fa22d7cedc90273 100644 (file)
@@ -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;