Commit cf7182fb authored by Martin v. Löwis's avatar Martin v. Löwis

Widen ASDL sequences to Py_ssize_t lengths to better match PEP 353.

parent e04670af
...@@ -15,17 +15,17 @@ typedef PyObject * object; ...@@ -15,17 +15,17 @@ typedef PyObject * object;
/* XXX A sequence should be typed so that its use can be typechecked. */ /* XXX A sequence should be typed so that its use can be typechecked. */
typedef struct { typedef struct {
int size; Py_ssize_t size;
void *elements[1]; void *elements[1];
} asdl_seq; } asdl_seq;
typedef struct { typedef struct {
int size; Py_ssize_t size;
int elements[1]; int elements[1];
} asdl_int_seq; } asdl_int_seq;
asdl_seq *asdl_seq_new(int size, PyArena *arena); asdl_seq *asdl_seq_new(Py_ssize_t size, PyArena *arena);
asdl_int_seq *asdl_int_seq_new(int size, PyArena *arena); asdl_int_seq *asdl_int_seq_new(Py_ssize_t size, PyArena *arena);
#define asdl_seq_GET(S, I) (S)->elements[(I)] #define asdl_seq_GET(S, I) (S)->elements[(I)]
#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size) #define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size)
......
...@@ -636,7 +636,7 @@ static int add_attributes(PyTypeObject* type, char**attrs, int num_fields) ...@@ -636,7 +636,7 @@ static int add_attributes(PyTypeObject* type, char**attrs, int num_fields)
static PyObject* ast2obj_list(asdl_seq *seq, PyObject* (*func)(void*)) static PyObject* ast2obj_list(asdl_seq *seq, PyObject* (*func)(void*))
{ {
int i, n = asdl_seq_LEN(seq); Py_ssize_t i, n = asdl_seq_LEN(seq);
PyObject *result = PyList_New(n); PyObject *result = PyList_New(n);
PyObject *value; PyObject *value;
if (!result) if (!result)
...@@ -2857,7 +2857,7 @@ ast2obj_expr(void* _o) ...@@ -2857,7 +2857,7 @@ ast2obj_expr(void* _o)
goto failed; goto failed;
Py_DECREF(value); Py_DECREF(value);
{ {
int i, n = asdl_seq_LEN(o->v.Compare.ops); Py_ssize_t i, n = asdl_seq_LEN(o->v.Compare.ops);
value = PyList_New(n); value = PyList_New(n);
if (!value) goto failed; if (!value) goto failed;
for(i = 0; i < n; i++) for(i = 0; i < n; i++)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#include "asdl.h" #include "asdl.h"
asdl_seq * asdl_seq *
asdl_seq_new(int size, PyArena *arena) asdl_seq_new(Py_ssize_t size, PyArena *arena)
{ {
asdl_seq *seq = NULL; asdl_seq *seq = NULL;
size_t n = (size ? (sizeof(void *) * (size - 1)) : 0); size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);
...@@ -33,7 +33,7 @@ asdl_seq_new(int size, PyArena *arena) ...@@ -33,7 +33,7 @@ asdl_seq_new(int size, PyArena *arena)
} }
asdl_int_seq * asdl_int_seq *
asdl_int_seq_new(int size, PyArena *arena) asdl_int_seq_new(Py_ssize_t size, PyArena *arena)
{ {
asdl_int_seq *seq = NULL; asdl_int_seq *seq = NULL;
size_t n = (size ? (sizeof(void *) * (size - 1)) : 0); size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment