summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2018-04-02-09-32-40.bpo-33199.TPnxQu.rst2
-rw-r--r--Objects/dictobject.c1
2 files changed, 3 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-02-09-32-40.bpo-33199.TPnxQu.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-02-09-32-40.bpo-33199.TPnxQu.rst
new file mode 100644
index 0000000..22abf8d
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2018-04-02-09-32-40.bpo-33199.TPnxQu.rst
@@ -0,0 +1,2 @@
+Fix ``ma_version_tag`` in dict implementation is uninitialized when copying
+from key-sharing dict.
diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index bb4ea1f..be895d4 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -2551,6 +2551,7 @@ PyDict_Copy(PyObject *o)
split_copy->ma_values = newvalues;
split_copy->ma_keys = mp->ma_keys;
split_copy->ma_used = mp->ma_used;
+ split_copy->ma_version_tag = DICT_NEXT_VERSION();
DK_INCREF(mp->ma_keys);
for (i = 0, n = size; i < n; i++) {
PyObject *value = mp->ma_values[i];