modsupport: replace int with Py_ssize_t

Issue #28915.
This commit is contained in:
Victor Stinner 2016-12-09 00:24:47 +01:00
parent e83aab12b0
commit e9aae2dcc5
1 changed files with 20 additions and 17 deletions

View File

@ -13,10 +13,10 @@ const char *_Py_PackageContext = NULL;
/* Helper for mkvalue() to scan the length of a format */ /* Helper for mkvalue() to scan the length of a format */
static int static Py_ssize_t
countformat(const char *format, int endchar) countformat(const char *format, int endchar)
{ {
int count = 0; Py_ssize_t count = 0;
int level = 0; int level = 0;
while (level > 0 || *format != endchar) { while (level > 0 || *format != endchar) {
switch (*format) { switch (*format) {
@ -28,8 +28,9 @@ countformat(const char *format, int endchar)
case '(': case '(':
case '[': case '[':
case '{': case '{':
if (level == 0) if (level == 0) {
count++; count++;
}
level++; level++;
break; break;
case ')': case ')':
@ -45,9 +46,10 @@ countformat(const char *format, int endchar)
case '\t': case '\t':
break; break;
default: default:
if (level == 0) if (level == 0) {
count++; count++;
} }
}
format++; format++;
} }
return count; return count;
@ -57,17 +59,17 @@ countformat(const char *format, int endchar)
/* Generic function to create a value -- the inverse of getargs() */ /* Generic function to create a value -- the inverse of getargs() */
/* After an original idea and first implementation by Steven Miale */ /* After an original idea and first implementation by Steven Miale */
static PyObject *do_mktuple(const char**, va_list *, int, int, int); static PyObject *do_mktuple(const char**, va_list *, int, Py_ssize_t, int);
static PyObject *do_mklist(const char**, va_list *, int, int, int); static PyObject *do_mklist(const char**, va_list *, int, Py_ssize_t, int);
static PyObject *do_mkdict(const char**, va_list *, int, int, int); static PyObject *do_mkdict(const char**, va_list *, int, Py_ssize_t, int);
static PyObject *do_mkvalue(const char**, va_list *, int); static PyObject *do_mkvalue(const char**, va_list *, int);
static void static void
do_ignore(const char **p_format, va_list *p_va, int endchar, int n, int flags) do_ignore(const char **p_format, va_list *p_va, int endchar, Py_ssize_t n, int flags)
{ {
PyObject *v; PyObject *v;
int i; Py_ssize_t i;
assert(PyErr_Occurred()); assert(PyErr_Occurred());
v = PyTuple_New(n); v = PyTuple_New(n);
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
@ -91,15 +93,16 @@ do_ignore(const char **p_format, va_list *p_va, int endchar, int n, int flags)
"Unmatched paren in format"); "Unmatched paren in format");
return; return;
} }
if (endchar) if (endchar) {
++*p_format; ++*p_format;
}
} }
static PyObject * static PyObject *
do_mkdict(const char **p_format, va_list *p_va, int endchar, int n, int flags) do_mkdict(const char **p_format, va_list *p_va, int endchar, Py_ssize_t n, int flags)
{ {
PyObject *d; PyObject *d;
int i; Py_ssize_t i;
if (n < 0) if (n < 0)
return NULL; return NULL;
if (n % 2) { if (n % 2) {
@ -146,10 +149,10 @@ do_mkdict(const char **p_format, va_list *p_va, int endchar, int n, int flags)
} }
static PyObject * static PyObject *
do_mklist(const char **p_format, va_list *p_va, int endchar, int n, int flags) do_mklist(const char **p_format, va_list *p_va, int endchar, Py_ssize_t n, int flags)
{ {
PyObject *v; PyObject *v;
int i; Py_ssize_t i;
if (n < 0) if (n < 0)
return NULL; return NULL;
/* Note that we can't bail immediately on error as this will leak /* Note that we can't bail immediately on error as this will leak
@ -180,10 +183,10 @@ do_mklist(const char **p_format, va_list *p_va, int endchar, int n, int flags)
} }
static PyObject * static PyObject *
do_mktuple(const char **p_format, va_list *p_va, int endchar, int n, int flags) do_mktuple(const char **p_format, va_list *p_va, int endchar, Py_ssize_t n, int flags)
{ {
PyObject *v; PyObject *v;
int i; Py_ssize_t i;
if (n < 0) if (n < 0)
return NULL; return NULL;
/* Note that we can't bail immediately on error as this will leak /* Note that we can't bail immediately on error as this will leak
@ -465,7 +468,7 @@ static PyObject *
va_build_value(const char *format, va_list va, int flags) va_build_value(const char *format, va_list va, int flags)
{ {
const char *f = format; const char *f = format;
int n = countformat(f, '\0'); Py_ssize_t n = countformat(f, '\0');
va_list lva; va_list lva;
PyObject *retval; PyObject *retval;