mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-127411: Fix invalid conversion of load of TLBC array when compiled in C++ (#127466)
Cast the result of the load to the correct type
This commit is contained in:
parent
c46acd3588
commit
c4303763da
2 changed files with 9 additions and 2 deletions
|
@ -609,12 +609,19 @@ PyAPI_DATA(const struct _PyCode8) _Py_InitCleanup;
|
|||
|
||||
#ifdef Py_GIL_DISABLED
|
||||
|
||||
static inline _PyCodeArray *
|
||||
_PyCode_GetTLBCArray(PyCodeObject *co)
|
||||
{
|
||||
return _Py_STATIC_CAST(_PyCodeArray *,
|
||||
_Py_atomic_load_ptr_acquire(&co->co_tlbc));
|
||||
}
|
||||
|
||||
// Return a pointer to the thread-local bytecode for the current thread, if it
|
||||
// exists.
|
||||
static inline _Py_CODEUNIT *
|
||||
_PyCode_GetTLBCFast(PyThreadState *tstate, PyCodeObject *co)
|
||||
{
|
||||
_PyCodeArray *code = _Py_atomic_load_ptr_acquire(&co->co_tlbc);
|
||||
_PyCodeArray *code = _PyCode_GetTLBCArray(co);
|
||||
int32_t idx = ((_PyThreadStateImpl*) tstate)->tlbc_index;
|
||||
if (idx < code->size && code->entries[idx] != NULL) {
|
||||
return (_Py_CODEUNIT *) code->entries[idx];
|
||||
|
|
|
@ -94,7 +94,7 @@ _PyFrame_GetBytecode(_PyInterpreterFrame *f)
|
|||
{
|
||||
#ifdef Py_GIL_DISABLED
|
||||
PyCodeObject *co = _PyFrame_GetCode(f);
|
||||
_PyCodeArray *tlbc = _Py_atomic_load_ptr_acquire(&co->co_tlbc);
|
||||
_PyCodeArray *tlbc = _PyCode_GetTLBCArray(co);
|
||||
assert(f->tlbc_index >= 0 && f->tlbc_index < tlbc->size);
|
||||
return (_Py_CODEUNIT *)tlbc->entries[f->tlbc_index];
|
||||
#else
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue