--- Python-2.5.2/Objects/dictobject.c 2007-11-29 18:33:04.000000000 +0000 +++ Python-2.5.2.new/Objects/dictobject.c 2008-07-28 13:34:09.000000000 +0100 @@ -1356,7 +1356,7 @@ return -1; } mp = (dictobject*)a; - if (PyDict_Check(b)) { + if (PyDict_CheckExact(b)) { other = (dictobject*)b; if (other == mp || other->ma_used == 0) /* a.update(a) or a.update({}); nothing to do */