diff options
| author | Xavier Morel <xmo@openerp.com> | 2014-07-07 13:51:53 +0200 |
|---|---|---|
| committer | Xavier Morel <xmo@openerp.com> | 2014-07-07 13:51:53 +0200 |
| commit | ac282e029420ec5ad44cc6c3b99784d24faa043b (patch) | |
| tree | d79c7578ee07b31bc32b88a5f5852a3fd204d0dd /addons/website/static/src/xml/website.editor.xml | |
| parent | cd7e9a98d4282a43ca752bf85bd9bf6e99cfb6b6 (diff) | |
[FIX] unsafe listification of weakref in Python < 2.7.4
Fixes #966
* As a preallocation optimization, ``list()`` calls ``__len__`` on its
parameter if it's available
* Before Python 2.7.4, WeakSet has a bug[0] where ``len()`` is unsafe: it is
done by iteration and weakrefs may be removed from the underlying set during
the iteration
As a result, the safety feature of listifying a WeakSet to ensure we have
strong refs on all items during iteration may blow up.
Wrapping the weakset in a ``iter()`` makes ``__len__()`` invisible and ensures
we're within the IterationGuard[1].
Which now that I think about it means we *should* be able to safely iterate
weaksets in the first place and may not have needed to listify them...
[0] http://bugs.python.org/issue14159
[1] http://hg.python.org/cpython/file/b6acfbe2bdbe/Lib/_weakrefset.py#l58
Diffstat (limited to 'addons/website/static/src/xml/website.editor.xml')
0 files changed, 0 insertions, 0 deletions
