mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00

exposed in header files. Fixed a few comments in these headers. As we might have expected, writing down invariants systematically exposed a (minor) bug. In this case, function objects have a writeable func_code attribute, which could be set to code objects with the wrong number of free variables. Calling the resulting function segfaulted the interpreter. Added a corresponding test.
30 lines
708 B
C
30 lines
708 B
C
|
|
/* Range object interface */
|
|
|
|
#ifndef Py_RANGEOBJECT_H
|
|
#define Py_RANGEOBJECT_H
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* This is about the type 'xrange', not the built-in function range(), which
|
|
returns regular lists. */
|
|
|
|
/*
|
|
A range object represents an integer range. This is an immutable object;
|
|
a range cannot change its value after creation.
|
|
|
|
Range objects behave like the corresponding tuple objects except that
|
|
they are represented by a start, stop, and step datamembers.
|
|
*/
|
|
|
|
PyAPI_DATA(PyTypeObject) PyRange_Type;
|
|
|
|
#define PyRange_Check(op) ((op)->ob_type == &PyRange_Type)
|
|
|
|
PyAPI_FUNC(PyObject *) PyRange_New(long, long, long, int);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* !Py_RANGEOBJECT_H */
|