File tree Expand file tree Collapse file tree 1 file changed +5
-4
lines changed Expand file tree Collapse file tree 1 file changed +5
-4
lines changed Original file line number Diff line number Diff line change @@ -84,12 +84,13 @@ inline PyObject *make_object_base_type(PyTypeObject *metaclass);
8484// On CPython < 3.4 and on PyPy, `PyThread_set_key_value` strangely does not set
8585// the value if it has already been set. Instead, it must first be deleted and
8686// then set again.
87+ inline void tls_replace_value (PYBIND11_TLS_KEY_REF key, void *value) {
88+ PyThread_delete_key_value (key);
89+ PyThread_set_key_value (key, value);
90+ }
8791# define PYBIND11_TLS_DELETE_VALUE (key ) PyThread_delete_key_value(key)
8892# define PYBIND11_TLS_REPLACE_VALUE (key, value ) \
89- do { \
90- PyThread_delete_key_value ((key)); \
91- PyThread_set_key_value ((key), (value)); \
92- } while (false )
93+ ::pybind11::detail::tls_replace_value ((key), (value))
9394# else
9495# define PYBIND11_TLS_DELETE_VALUE (key ) PyThread_set_key_value((key), nullptr )
9596# define PYBIND11_TLS_REPLACE_VALUE (key, value ) PyThread_set_key_value((key), (value))
You can’t perform that action at this time.
0 commit comments