summaryrefslogtreecommitdiff
path: root/Python/compile.c
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2018-04-19 08:28:04 +0300
committerGitHub <noreply@github.com>2018-04-19 08:28:04 +0300
commitb7e1eff8436f6e0c4aac440036092fcf96f82960 (patch)
tree00c634897d754dae08e0252cdc936fa093bab3c2 /Python/compile.c
parent9009f3e389123c5f94d4d12f1f51b0a88531c37c (diff)
downloadcpython-git-b7e1eff8436f6e0c4aac440036092fcf96f82960.tar.gz
bpo-33299: Return an object itself for some types in _PyCode_ConstantKey(). (GH-6513)
Diffstat (limited to 'Python/compile.c')
-rw-r--r--Python/compile.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/Python/compile.c b/Python/compile.c
index 62fe971739..6053db2a12 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -5299,10 +5299,12 @@ dict_keys_inorder(PyObject *dict, Py_ssize_t offset)
return NULL;
while (PyDict_Next(dict, &pos, &k, &v)) {
i = PyLong_AS_LONG(v);
- /* The keys of the dictionary are tuples. (see compiler_add_o
- * and _PyCode_ConstantKey). The object we want is always second,
- * though. */
- k = PyTuple_GET_ITEM(k, 1);
+ /* The keys of the dictionary can be tuples wrapping a contant.
+ * (see compiler_add_o and _PyCode_ConstantKey). In that case
+ * the object we want is always second. */
+ if (PyTuple_CheckExact(k)) {
+ k = PyTuple_GET_ITEM(k, 1);
+ }
Py_INCREF(k);
assert((i - offset) < size);
assert((i - offset) >= 0);