mirror of
https://github.com/python/cpython.git
synced 2025-08-22 17:55:18 +00:00
Widen ASDL sequences to Py_ssize_t lengths to better match PEP 353.
This commit is contained in:
parent
33cac8578b
commit
cc10a37ef0
3 changed files with 8 additions and 8 deletions
|
@ -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)
|
||||||
|
|
||||||
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)
|
||||||
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 @@
|
||||||
#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)
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue