[Checkins] [zopefoundation/zope.interface] 0fc414: Additional crash-safety for adapter lookup.
Jason Madden
noreply at github.com
Mon Mar 9 16:32:56 CET 2020
Branch: refs/heads/issue11
Home: https://github.com/zopefoundation/zope.interface
Commit: 0fc4148b8a17884f62ea013f962e156dea9229bc
https://github.com/zopefoundation/zope.interface/commit/0fc4148b8a17884f62ea013f962e156dea9229bc
Author: Jason Madden <jamadden at gmail.com>
Date: 2020-03-09 (Mon, 09 Mar 2020)
Changed paths:
M CHANGES.rst
M src/zope/interface/_zope_interface_coptimizations.c
M src/zope/interface/declarations.py
M src/zope/interface/interface.py
M src/zope/interface/tests/test_declarations.py
M src/zope/interface/tests/test_registry.py
Log Message:
-----------
Additional crash-safety for adapter lookup.
Make the C functions get the cache only after resolving the
``required`` into a tuple, in case of side-effects like...clearing the
cache. This could lead to the ``cache`` object being deallocated
before we used it.
Drop the ``tuplefy`` function in favor of a direct call to
``PySequence_Tuple``. It's what the ``tuple`` constructor would do
anyway and saves a few steps.
Make sure that getting ``providedBy(super())`` and
``implementedBy(super())`` have no side effects.
More information about the checkins
mailing list