Issue #28509: dict.update() no longer allocate unnecessary large memory
This commit is contained in:
parent
ec9357b90c
commit
b1152be2de
|
@ -10,6 +10,8 @@ What's New in Python 3.6.0 beta 3
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #28509: dict.update() no longer allocate unnecessary large memory.
|
||||||
|
|
||||||
- Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
|
- Issue #28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
|
||||||
build.
|
build.
|
||||||
|
|
||||||
|
|
|
@ -2406,9 +2406,11 @@ dict_merge(PyObject *a, PyObject *b, int override)
|
||||||
* incrementally resizing as we insert new items. Expect
|
* incrementally resizing as we insert new items. Expect
|
||||||
* that there will be no (or few) overlapping keys.
|
* that there will be no (or few) overlapping keys.
|
||||||
*/
|
*/
|
||||||
if (mp->ma_keys->dk_usable * 3 < other->ma_used * 2)
|
if (USABLE_FRACTION(mp->ma_keys->dk_size) < other->ma_used) {
|
||||||
if (dictresize(mp, (mp->ma_used + other->ma_used)*2) != 0)
|
if (dictresize(mp, ESTIMATE_SIZE(mp->ma_used + other->ma_used))) {
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
ep0 = DK_ENTRIES(other->ma_keys);
|
ep0 = DK_ENTRIES(other->ma_keys);
|
||||||
for (i = 0, n = other->ma_keys->dk_nentries; i < n; i++) {
|
for (i = 0, n = other->ma_keys->dk_nentries; i < n; i++) {
|
||||||
PyObject *key, *value;
|
PyObject *key, *value;
|
||||||
|
|
Loading…
Reference in New Issue