[lxc-devel] [PATCH] Fix build error(ISO C90 specs violation) in lxc.c

Masami Ichikawa masami256 at gmail.com
Mon Sep 22 14:32:46 UTC 2014


This patch fixes following build errors.

running build_ext
building '_lxc' extension
creating build/temp.linux-x86_64-3.4
gcc -pthread -Wno-unused-result -Werror=declaration-after-statement -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4 -fPIC -I../../src -I../../src -I/usr/include/python3.4m -c lxc.c -o ./build/temp.linux-x86_64-3.4/lxc.o
lxc.c: In function ‘convert_tuple_to_char_pointer_array’:
lxc.c:49:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
     char **result = (char**) calloc(argc + 1, sizeof(char*));
     ^
lxc.c:60:9: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
         char *str = NULL;
         ^
lxc.c: In function ‘Container_get_cgroup_item’:
lxc.c:822:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
     char* value = (char*) malloc(sizeof(char)*len + 1);
     ^
lxc.c: In function ‘Container_get_config_item’:
lxc.c:861:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
     char* value = (char*) malloc(sizeof(char)*len + 1);
     ^
lxc.c: In function ‘Container_get_keys’:
lxc.c:903:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
     char* value = (char*) malloc(sizeof(char)*len + 1);
     ^
cc1: some warnings being treated as errors
error: command 'gcc' failed with exit status 1
Makefile:472: recipe for target 'all' failed
make[3]: *** [all] Error 1
make[3]: Leaving directory '/home/masami/codes/lxc/src/python-lxc'
Makefile:394: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/masami/codes/lxc/src'
Makefile:338: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/home/masami/codes/lxc/src'
Makefile:484: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

build env:
distribution: Arch Linux
gcc version 4.9.1 20140903 (prerelease) (GCC)

Signed-off-by: Masami Ichikawa <masami256 at gmail.com>
---
 src/python-lxc/lxc.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/python-lxc/lxc.c b/src/python-lxc/lxc.c
index 91c199f..42b8448 100644
--- a/src/python-lxc/lxc.c
+++ b/src/python-lxc/lxc.c
@@ -37,6 +37,7 @@ char**
 convert_tuple_to_char_pointer_array(PyObject *argv) {
     int argc;
     int i, j;
+    char **result;
 
     /* not a list or tuple */
     if (!PyList_Check(argv) && !PyTuple_Check(argv)) {
@@ -46,7 +47,7 @@ convert_tuple_to_char_pointer_array(PyObject *argv) {
 
     argc = PySequence_Fast_GET_SIZE(argv);
 
-    char **result = (char**) calloc(argc + 1, sizeof(char*));
+    result = (char**) calloc(argc + 1, sizeof(char*));
 
     if (result == NULL) {
         PyErr_SetNone(PyExc_MemoryError);
@@ -54,11 +55,10 @@ convert_tuple_to_char_pointer_array(PyObject *argv) {
     }
 
     for (i = 0; i < argc; i++) {
-        PyObject *pyobj = PySequence_Fast_GET_ITEM(argv, i);
-        assert(pyobj != NULL);
-
         char *str = NULL;
         PyObject *pystr = NULL;
+        PyObject *pyobj = PySequence_Fast_GET_ITEM(argv, i);
+        assert(pyobj != NULL);
 
         if (!PyUnicode_Check(pyobj)) {
             PyErr_SetString(PyExc_ValueError, "Expected a string");
@@ -806,6 +806,7 @@ Container_get_cgroup_item(Container *self, PyObject *args, PyObject *kwds)
     static char *kwlist[] = {"key", NULL};
     char* key = NULL;
     int len = 0;
+    char* value;
     PyObject *ret = NULL;
 
     if (! PyArg_ParseTupleAndKeywords(args, kwds, "s", kwlist,
@@ -819,7 +820,7 @@ Container_get_cgroup_item(Container *self, PyObject *args, PyObject *kwds)
         return NULL;
     }
 
-    char* value = (char*) malloc(sizeof(char)*len + 1);
+    value = (char*) malloc(sizeof(char)*len + 1);
     if (value == NULL)
         return PyErr_NoMemory();
 
@@ -841,6 +842,7 @@ Container_get_config_item(Container *self, PyObject *args, PyObject *kwds)
     static char *kwlist[] = {"key", NULL};
     char* key = NULL;
     int len = 0;
+    char* value;
     PyObject *ret = NULL;
 
     if (! PyArg_ParseTupleAndKeywords(args, kwds, "s|", kwlist,
@@ -858,7 +860,7 @@ Container_get_config_item(Container *self, PyObject *args, PyObject *kwds)
         return PyUnicode_FromString("");
     }
 
-    char* value = (char*) malloc(sizeof(char)*len + 1);
+    value = (char*) malloc(sizeof(char)*len + 1);
     if (value == NULL)
         return PyErr_NoMemory();
 
@@ -887,6 +889,7 @@ Container_get_keys(Container *self, PyObject *args, PyObject *kwds)
     static char *kwlist[] = {"key", NULL};
     char* key = NULL;
     int len = 0;
+    char* value;
     PyObject *ret = NULL;
 
     if (! PyArg_ParseTupleAndKeywords(args, kwds, "|s", kwlist,
@@ -900,7 +903,7 @@ Container_get_keys(Container *self, PyObject *args, PyObject *kwds)
         return NULL;
     }
 
-    char* value = (char*) malloc(sizeof(char)*len + 1);
+    value = (char*) malloc(sizeof(char)*len + 1);
     if (value == NULL)
         return PyErr_NoMemory();
 
-- 
2.1.0



More information about the lxc-devel mailing list