[Python-checkins] bpo-33199: Initialize ma_version_tag in PyDict_Copy (GH-6341)

INADA Naoki webhook-mailer at python.org
Mon Apr 2 22:43:56 EDT 2018


https://github.com/python/cpython/commit/d1c82c5cc7be0c21dddf86fd19c1702f6218459b
commit: d1c82c5cc7be0c21dddf86fd19c1702f6218459b
branch: master
author: INADA Naoki <methane at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018-04-03T11:43:53+09:00
summary:

bpo-33199: Initialize ma_version_tag in PyDict_Copy (GH-6341)

files:
A Misc/NEWS.d/next/Core and Builtins/2018-04-02-09-32-40.bpo-33199.TPnxQu.rst
M Objects/dictobject.c

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 000000000000..22abf8d00011
--- /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 bb4ea1f5f9c5..be895d4c1524 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];



More information about the Python-checkins mailing list