Skip to content

Commit 1a5856b

Browse files
serhiy-storchakavstinner
authored andcommitted
bpo-29867: Add asserts in PyTuple_GET_SIZE, PyList_GET_SIZE and PySet_GET_SIZE. (python#751)
1 parent a36e939 commit 1a5856b

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

Include/listobject.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ PyAPI_FUNC(void) _PyList_DebugMallocStats(FILE *out);
7171
#ifndef Py_LIMITED_API
7272
#define PyList_GET_ITEM(op, i) (((PyListObject *)(op))->ob_item[i])
7373
#define PyList_SET_ITEM(op, i, v) (((PyListObject *)(op))->ob_item[i] = (v))
74-
#define PyList_GET_SIZE(op) Py_SIZE(op)
74+
#define PyList_GET_SIZE(op) (assert(PyList_Check(op)),Py_SIZE(op))
7575
#define _PyList_ITEMS(op) (((PyListObject *)(op))->ob_item)
7676
#endif
7777

Include/setobject.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ typedef struct {
6464
PyObject *weakreflist; /* List of weak references */
6565
} PySetObject;
6666

67-
#define PySet_GET_SIZE(so) (((PySetObject *)(so))->used)
67+
#define PySet_GET_SIZE(so) (assert(PyAnySet_Check(so)),(((PySetObject *)(so))->used))
6868

6969
PyAPI_DATA(PyObject *) _PySet_Dummy;
7070

Include/tupleobject.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ PyAPI_FUNC(void) _PyTuple_MaybeUntrack(PyObject *);
5656
/* Macro, trading safety for speed */
5757
#ifndef Py_LIMITED_API
5858
#define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i])
59-
#define PyTuple_GET_SIZE(op) Py_SIZE(op)
59+
#define PyTuple_GET_SIZE(op) (assert(PyTuple_Check(op)),Py_SIZE(op))
6060

6161
/* Macro, *only* to be used to fill in brand new tuples */
6262
#define PyTuple_SET_ITEM(op, i, v) (((PyTupleObject *)(op))->ob_item[i] = v)

Objects/odictobject.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1519,7 +1519,7 @@ odict_repr(PyODictObject *self)
15191519
count++;
15201520
}
15211521
if (count < PyList_GET_SIZE(pieces))
1522-
PyList_GET_SIZE(pieces) = count;
1522+
Py_SIZE(pieces) = count;
15231523
}
15241524
else {
15251525
PyObject *items = _PyObject_CallMethodIdObjArgs((PyObject *)self,

0 commit comments

Comments
 (0)