]> granicus.if.org Git - python/commit
Close #18469: Replace PyDict_GetItemString() with _PyDict_GetItemId() in structseq.c
authorVictor Stinner <victor.stinner@gmail.com>
Tue, 16 Jul 2013 23:22:45 +0000 (01:22 +0200)
committerVictor Stinner <victor.stinner@gmail.com>
Tue, 16 Jul 2013 23:22:45 +0000 (01:22 +0200)
commit26f91999b453563839466322164e566781f10ccd
tree4ea36e05182ee4b76d630f423f3bb83cbd68e86e
parentb8f602a60aea73497126b83fc4cad24e5c639641
Close #18469: Replace PyDict_GetItemString() with _PyDict_GetItemId() in structseq.c

_PyDict_GetItemId() is more efficient: it only builds the Unicode string once.
Identifiers (dictionary keys) are now created at Python initialization, and if
the creation failed, Python does exit with a fatal error.

Before, PyDict_GetItemString() failure was not handled: structseq_new() could
call PyObject_GC_NewVar() with a negative size, and structseq_dealloc() could
also crash.
Objects/structseq.c
Python/pythonrun.c