From: Benjamin Peterson Date: Mon, 23 Apr 2012 15:50:47 +0000 (-0400) Subject: don't make shared keys with dict subclasses X-Git-Tag: v3.3.0a3~107 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=53b977127fe8192f8bdf6a400de81086e128e936;p=thirdparty%2FPython%2Fcpython.git don't make shared keys with dict subclasses --- diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 2e45c8d8fdd4..2afbbaee503e 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -3686,7 +3686,7 @@ _PyObjectDict_SetItem(PyTypeObject *tp, PyObject **dictptr, res = PyDict_SetItem(dict, key, value); if (cached != ((PyDictObject *)dict)->ma_keys) { /* Either update tp->ht_cached_keys or delete it */ - if (cached->dk_refcnt == 1) { + if (cached->dk_refcnt == 1 && PyDict_CheckExact(dict)) { CACHED_KEYS(tp) = make_keys_shared(dict); if (CACHED_KEYS(tp) == NULL) return -1;