Mercurial > hg-stable
changeset 44100:969527ac7b44
cext: fix compiler warning about sign changing
line.len is a Py_ssize_t, and we're casing to size_t (unsigned). On my compiler,
this causes a warning to be emitted:
```
mercurial/cext/manifest.c: In function 'pathlen':
mercurial/cext/manifest.c:48:44: warning: operand of ?: changes signedness from 'Py_ssize_t' {aka 'long int'} to 'long unsigned int' due to unsignedness of other operand [-Wsign-compare]
return (end) ? (size_t)(end - l->start) : l->len;
^~~~~~
```
Differential Revision: https://phab.mercurial-scm.org/D7913
author | Kyle Lippincott <spectral@google.com> |
---|---|
date | Thu, 16 Jan 2020 12:27:15 -0800 |
parents | b4420cea45e8 |
children | 25097b4d2c6f |
files | mercurial/cext/manifest.c |
diffstat | 1 files changed, 6 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/cext/manifest.c Wed Jan 15 23:34:04 2020 -0500 +++ b/mercurial/cext/manifest.c Thu Jan 16 12:27:15 2020 -0800 @@ -42,17 +42,17 @@ #define MANIFEST_TOO_SHORT_LINE -5 /* get the length of the path for a line */ -static size_t pathlen(line *l) +static Py_ssize_t pathlen(line *l) { const char *end = memchr(l->start, '\0', l->len); - return (end) ? (size_t)(end - l->start) : l->len; + return (end) ? (Py_ssize_t)(end - l->start) : l->len; } /* get the node value of a single line */ static PyObject *nodeof(line *l) { char *s = l->start; - ssize_t llen = pathlen(l); + Py_ssize_t llen = pathlen(l); PyObject *hash; if (llen + 1 + 40 + 1 > l->len) { /* path '\0' hash '\n' */ PyErr_SetString(PyExc_ValueError, "manifest line too short"); @@ -76,7 +76,7 @@ static PyObject *hashflags(line *l) { char *s = l->start; - size_t plen = pathlen(l); + Py_ssize_t plen = pathlen(l); PyObject *hash = nodeof(l); /* 40 for hash, 1 for null byte, 1 for newline */ @@ -270,7 +270,7 @@ static PyObject *lmiter_iterentriesnext(PyObject *o) { - size_t pl; + Py_ssize_t pl; line *l; Py_ssize_t consumed; PyObject *ret = NULL, *path = NULL, *hash = NULL, *flags = NULL; @@ -337,7 +337,7 @@ static PyObject *lmiter_iterkeysnext(PyObject *o) { - size_t pl; + Py_ssize_t pl; line *l = lmiter_nextline((lmIter *)o); if (!l) { return NULL;