Message354949
When dict is empty, di_pos of reverse iterator must be -1, not 0.
Additionally, di_pos must be initialized from ma_used when dict is key sharing dict.
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index 64876e0519..6c4b41700b 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -3452,10 +3452,15 @@ dictiter_new(PyDictObject *dict, PyTypeObject *itertype)
di->di_dict = dict;
di->di_used = dict->ma_used;
di->len = dict->ma_used;
- if ((itertype == &PyDictRevIterKey_Type ||
- itertype == &PyDictRevIterItem_Type ||
- itertype == &PyDictRevIterValue_Type) && dict->ma_used) {
+ if (itertype == &PyDictRevIterKey_Type ||
+ itertype == &PyDictRevIterItem_Type ||
+ itertype == &PyDictRevIterValue_Type) {
+ if (dict->ma_values) {
+ di->di_pos = dict->ma_used - 1;
+ }
+ else {
di->di_pos = dict->ma_keys->dk_nentries - 1;
+ }
}
else { |
|
Date |
User |
Action |
Args |
2019-10-19 17:24:54 | methane | set | recipients:
+ methane, ned.deily, ivb, serhiy.storchaka, corona10, pablogsal, remi.lapeyre, xtreak |
2019-10-19 17:24:54 | methane | set | messageid: <1571505894.56.0.0952972041751.issue38525@roundup.psfhosted.org> |
2019-10-19 17:24:54 | methane | link | issue38525 messages |
2019-10-19 17:24:54 | methane | create | |
|