diff options
author | Armin Rigo <arigo@tunes.org> | 2004-10-28 16:32:00 (GMT) |
---|---|---|
committer | Armin Rigo <arigo@tunes.org> | 2004-10-28 16:32:00 (GMT) |
commit | 89a39461bff04b80bb4857790350e1ab30ff2df9 (patch) | |
tree | 54bc00a9ad30e8e49849874cfbca8543de62fa58 /Include/setobject.h | |
parent | 063e1e846dc5c3fe593cef5b14cc429369dcd2c2 (diff) | |
download | cpython-89a39461bff04b80bb4857790350e1ab30ff2df9.zip cpython-89a39461bff04b80bb4857790350e1ab30ff2df9.tar.gz cpython-89a39461bff04b80bb4857790350e1ab30ff2df9.tar.bz2 |
Wrote down the invariants of some common objects whose structure is
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.
Diffstat (limited to 'Include/setobject.h')
-rw-r--r-- | Include/setobject.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Include/setobject.h b/Include/setobject.h index abbd847..cc2d683 100644 --- a/Include/setobject.h +++ b/Include/setobject.h @@ -16,6 +16,14 @@ typedef struct { PyObject *data; long hash; /* only used by frozenset objects */ PyObject *weakreflist; /* List of weak references */ + + /* Invariants: + * data is a dictionary whose values are all True. + * data points to the same dict for the whole life of the set. + * For frozensets only: + * data is immutable. + * hash is the hash of the frozenset or -1 if not computed yet. + */ } PySetObject; PyAPI_DATA(PyTypeObject) PySet_Type; |