diff options
author | Guido van Rossum <guido@python.org> | 1998-05-14 01:00:51 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1998-05-14 01:00:51 (GMT) |
commit | 474b19e2abc71c3ae0afd5e7a11006cf40b9c047 (patch) | |
tree | a8797e14eb0d401e15d9aee0d96066b5f0ff93c1 | |
parent | 4180cf16499b3e5398e0cd9dc7b027b885a01db3 (diff) | |
download | cpython-474b19e2abc71c3ae0afd5e7a11006cf40b9c047.zip cpython-474b19e2abc71c3ae0afd5e7a11006cf40b9c047.tar.gz cpython-474b19e2abc71c3ae0afd5e7a11006cf40b9c047.tar.bz2 |
Make sure that PyDict_GetItem[String]() *never* raises an exception.
If the argument is not a dictionary, simply return NULL. If the
hash() on the key fails, clear the error.
-rw-r--r-- | Objects/dictobject.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Objects/dictobject.c b/Objects/dictobject.c index 06d2dc4..7fed379 100644 --- a/Objects/dictobject.c +++ b/Objects/dictobject.c @@ -317,7 +317,6 @@ PyDict_GetItem(op, key) { long hash; if (!PyDict_Check(op)) { - PyErr_BadInternalCall(); return NULL; } if (((dictobject *)op)->ma_table == NULL) @@ -328,8 +327,10 @@ PyDict_GetItem(op, key) #endif { hash = PyObject_Hash(key); - if (hash == -1) + if (hash == -1) { + PyErr_Clear(); return NULL; + } } return lookdict((dictobject *)op, key, hash) -> me_value; } |