]> granicus.if.org Git - python/commitdiff
[3.6] bpo-30923, bpo-31279: Fix GCC warnings (#4620)
authorVictor Stinner <victor.stinner@gmail.com>
Wed, 29 Nov 2017 23:00:35 +0000 (00:00 +0100)
committerGitHub <noreply@github.com>
Wed, 29 Nov 2017 23:00:35 +0000 (00:00 +0100)
* bpo-30923: Silence fall-through warnings in libexpat build. (#3205)

(cherry picked from commit 9e1e6f528f3fec16b9bd99f5ee38048ffec04a81)

* bpo-31279: Silence -Wstringop-overflow warning. (#3207)

(cherry picked from commit dce6502059f46a04f90938b9d832394c8215397b)

Objects/bytearrayobject.c
setup.py

index 7653322b829903a04be0394ac183635ff4cd2ec2..15524572929c6aef5be81ea9a589fd6e419c989a 100644 (file)
@@ -244,7 +244,7 @@ PyByteArray_Resize(PyObject *self, Py_ssize_t requested_size)
             return -1;
         }
         memcpy(sval, PyByteArray_AS_STRING(self),
-               Py_MIN(requested_size, Py_SIZE(self)));
+               Py_MIN((size_t)requested_size, (size_t)Py_SIZE(self)));
         PyObject_Free(obj->ob_bytes);
     }
     else {
index da4fcc31651c85e6d874ac6c1b33395facf690cf..0d644db8573e51b323babd5ff762f176be78caa9 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -1526,6 +1526,7 @@ class PyBuildExt(build_ext):
         if '--with-system-expat' in sysconfig.get_config_var("CONFIG_ARGS"):
             expat_inc = []
             define_macros = []
+            extra_compile_args = []
             expat_lib = ['expat']
             expat_sources = []
             expat_depends = []
@@ -1537,6 +1538,7 @@ class PyBuildExt(build_ext):
                 # call XML_SetHashSalt(), expat entropy sources are not needed
                 ('XML_POOR_ENTROPY', '1'),
             ]
+            extra_compile_args = []
             expat_lib = []
             expat_sources = ['expat/xmlparse.c',
                              'expat/xmlrole.c',
@@ -1554,8 +1556,15 @@ class PyBuildExt(build_ext):
                              'expat/xmltok_impl.h'
                              ]
 
+            cc = sysconfig.get_config_var('CC').split()[0]
+            ret = os.system(
+                      '"%s" -Werror -Wimplicit-fallthrough -E -xc /dev/null >/dev/null 2>&1' % cc)
+            if ret >> 8 == 0:
+                extra_compile_args.append('-Wno-implicit-fallthrough')
+
         exts.append(Extension('pyexpat',
                               define_macros = define_macros,
+                              extra_compile_args = extra_compile_args,
                               include_dirs = expat_inc,
                               libraries = expat_lib,
                               sources = ['pyexpat.c'] + expat_sources,