mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
cPickle.c, load_build(): Taught cPickle how to pick apart
the optional proto 2 slot state. pickle.py, load_build(): CAUTION: Noted that cPickle's load_build and pickle's load_build really don't do the same things with the state, and didn't before this patch either. cPickle never tries to do .update(), and has no backoff if instance.__dict__ can't be retrieved. There are no tests that can tell the difference, and part of what cPickle's load_build() did looked accidental to me, so I don't know what the true intent is here. pickletester.py, test_pickle.py: Got rid of the hack for exempting cPickle from running some of the proto 2 tests. dictobject.c, PyDict_Next(): documented intended use.
This commit is contained in:
parent
d2c684f79f
commit
080c88b912
5 changed files with 90 additions and 32 deletions
|
|
@ -642,7 +642,17 @@ PyDict_Clear(PyObject *op)
|
|||
PyMem_DEL(table);
|
||||
}
|
||||
|
||||
/* CAUTION: In general, it isn't safe to use PyDict_Next in a loop that
|
||||
/*
|
||||
* Iterate over a dict. Use like so:
|
||||
*
|
||||
* int i;
|
||||
* PyObject *key, *value;
|
||||
* i = 0; # important! i should not otherwise be changed by you
|
||||
* while (PyDict_Next(yourdict, &i, &key, &value) {
|
||||
* Refer to borrowed references in key and value.
|
||||
* }
|
||||
*
|
||||
* CAUTION: In general, it isn't safe to use PyDict_Next in a loop that
|
||||
* mutates the dict. One exception: it is safe if the loop merely changes
|
||||
* the values associated with the keys (but doesn't insert new keys or
|
||||
* delete keys), via PyDict_SetItem().
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue