diff --git a/mercurial/cext/osutil.c b/mercurial/cext/osutil.c --- a/mercurial/cext/osutil.c +++ b/mercurial/cext/osutil.c @@ -810,9 +810,10 @@ /* Check the memory we can use. Typically, argv[i] and * argv[i + 1] are continuous. */ for (i = 0; i < argc; ++i) { + size_t len; if (argv[i] > argvend || argv[i] < argvstart) break; /* not continuous */ - size_t len = strlen(argv[i]); + len = strlen(argv[i]); argvend = argv[i] + len + 1 /* '\0' */; } if (argvend > argvstart) /* sanity check */ @@ -1170,9 +1171,9 @@ { int sig = 0; int r; + sigset_t set; if (!PyArg_ParseTuple(args, "i", &sig)) return NULL; - sigset_t set; r = sigemptyset(&set); if (r != 0) return PyErr_SetFromErrno(PyExc_OSError); diff --git a/setup.py b/setup.py --- a/setup.py +++ b/setup.py @@ -1268,6 +1268,12 @@ ] common_include_dirs = ['mercurial'] +common_cflags = [] + +# MSVC 2008 still needs declarations at the top of the scope. +if os.name != 'nt': + common_cflags = ['-Werror=declaration-after-statement'] + osutil_cflags = [] osutil_ldflags = [] @@ -1441,18 +1447,21 @@ 'mercurial.cext.base85', ['mercurial/cext/base85.c'], include_dirs=common_include_dirs, + extra_compile_args=common_cflags, depends=common_depends, ), Extension( 'mercurial.cext.bdiff', ['mercurial/bdiff.c', 'mercurial/cext/bdiff.c'] + xdiff_srcs, include_dirs=common_include_dirs, + extra_compile_args=common_cflags, depends=common_depends + ['mercurial/bdiff.h'] + xdiff_headers, ), Extension( 'mercurial.cext.mpatch', ['mercurial/mpatch.c', 'mercurial/cext/mpatch.c'], include_dirs=common_include_dirs, + extra_compile_args=common_cflags, depends=common_depends, ), Extension( @@ -1466,6 +1475,7 @@ 'mercurial/cext/revlog.c', ], include_dirs=common_include_dirs, + extra_compile_args=common_cflags, depends=common_depends + ['mercurial/cext/charencode.h', 'mercurial/cext/revlog.h',], ), @@ -1473,7 +1483,7 @@ 'mercurial.cext.osutil', ['mercurial/cext/osutil.c'], include_dirs=common_include_dirs, - extra_compile_args=osutil_cflags, + extra_compile_args=common_cflags + osutil_cflags, extra_link_args=osutil_ldflags, depends=common_depends, ), @@ -1482,6 +1492,7 @@ [ 'mercurial/thirdparty/zope/interface/_zope_interface_coptimizations.c', ], + extra_compile_args=common_cflags, ), Extension( 'mercurial.thirdparty.sha1dc', @@ -1490,9 +1501,12 @@ 'mercurial/thirdparty/sha1dc/lib/sha1.c', 'mercurial/thirdparty/sha1dc/lib/ubc_check.c', ], + extra_compile_args=common_cflags, ), Extension( - 'hgext.fsmonitor.pywatchman.bser', ['hgext/fsmonitor/pywatchman/bser.c'] + 'hgext.fsmonitor.pywatchman.bser', + ['hgext/fsmonitor/pywatchman/bser.c'], + extra_compile_args=common_cflags, ), RustStandaloneExtension( 'mercurial.rustext', 'hg-cpython', 'librusthg', py3_features='python3' @@ -1503,11 +1517,11 @@ sys.path.insert(0, 'contrib/python-zstandard') import setup_zstd -extmodules.append( - setup_zstd.get_c_extension( - name='mercurial.zstd', root=os.path.abspath(os.path.dirname(__file__)) - ) +zstd = setup_zstd.get_c_extension( + name='mercurial.zstd', root=os.path.abspath(os.path.dirname(__file__)) ) +zstd.extra_compile_args += common_cflags +extmodules.append(zstd) try: from distutils import cygwinccompiler