https://github.com/python/cpython/commit/de5a6c7c7d00ac37d66cba9849202b374e9cdfb7
commit: de5a6c7c7d00ac37d66cba9849202b374e9cdfb7
branch: main
author: mpage <[email protected]>
committer: mpage <[email protected]>
date: 2024-10-21T11:08:13-07:00
summary:
gh-121459: Fix a couple of uses of `PyStackRef_FromPyObjectSteal` (#125711)
* Fix usage of PyStackRef_FromPyObjectSteal in CALL_TUPLE_1
This was missed in gh-124894
* Fix usage of PyStackRef_FromPyObjectSteal in _CALL_STR_1
This was missed in gh-124894
* Regenerate code
files:
M Python/bytecodes.c
M Python/executor_cases.c.h
M Python/generated_cases.c.h
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index c59a35c3e828ca..62e9b5ddd1584c 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -3629,11 +3629,12 @@ dummy_func(
DEOPT_IF(!PyStackRef_IsNull(null));
DEOPT_IF(callable_o != (PyObject *)&PyUnicode_Type);
STAT_INC(CALL, hit);
- res = PyStackRef_FromPyObjectSteal(PyObject_Str(arg_o));
+ PyObject *res_o = PyObject_Str(arg_o);
DEAD(null);
DEAD(callable);
PyStackRef_CLOSE(arg);
- ERROR_IF(PyStackRef_IsNull(res), error);
+ ERROR_IF(res_o == NULL, error);
+ res = PyStackRef_FromPyObjectSteal(res_o);
}
macro(CALL_STR_1) =
@@ -3650,11 +3651,12 @@ dummy_func(
DEOPT_IF(!PyStackRef_IsNull(null));
DEOPT_IF(callable_o != (PyObject *)&PyTuple_Type);
STAT_INC(CALL, hit);
- res = PyStackRef_FromPyObjectSteal(PySequence_Tuple(arg_o));
+ PyObject *res_o = PySequence_Tuple(arg_o);
DEAD(null);
DEAD(callable);
PyStackRef_CLOSE(arg);
- ERROR_IF(PyStackRef_IsNull(res), error);
+ ERROR_IF(res_o == NULL, error);
+ res = PyStackRef_FromPyObjectSteal(res_o);
}
macro(CALL_TUPLE_1) =
diff --git a/Python/executor_cases.c.h b/Python/executor_cases.c.h
index 15a6c7bc1a7966..5df4986cd838b5 100644
--- a/Python/executor_cases.c.h
+++ b/Python/executor_cases.c.h
@@ -4299,10 +4299,11 @@
}
STAT_INC(CALL, hit);
_PyFrame_SetStackPointer(frame, stack_pointer);
- res = PyStackRef_FromPyObjectSteal(PyObject_Str(arg_o));
+ PyObject *res_o = PyObject_Str(arg_o);
stack_pointer = _PyFrame_GetStackPointer(frame);
PyStackRef_CLOSE(arg);
- if (PyStackRef_IsNull(res)) JUMP_TO_ERROR();
+ if (res_o == NULL) JUMP_TO_ERROR();
+ res = PyStackRef_FromPyObjectSteal(res_o);
stack_pointer[-3] = res;
stack_pointer += -2;
assert(WITHIN_STACK_BOUNDS());
@@ -4331,10 +4332,11 @@
}
STAT_INC(CALL, hit);
_PyFrame_SetStackPointer(frame, stack_pointer);
- res = PyStackRef_FromPyObjectSteal(PySequence_Tuple(arg_o));
+ PyObject *res_o = PySequence_Tuple(arg_o);
stack_pointer = _PyFrame_GetStackPointer(frame);
PyStackRef_CLOSE(arg);
- if (PyStackRef_IsNull(res)) JUMP_TO_ERROR();
+ if (res_o == NULL) JUMP_TO_ERROR();
+ res = PyStackRef_FromPyObjectSteal(res_o);
stack_pointer[-3] = res;
stack_pointer += -2;
assert(WITHIN_STACK_BOUNDS());
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index a9290986c24f45..388031af87a79f 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -2978,10 +2978,11 @@
DEOPT_IF(callable_o != (PyObject *)&PyUnicode_Type, CALL);
STAT_INC(CALL, hit);
_PyFrame_SetStackPointer(frame, stack_pointer);
- res = PyStackRef_FromPyObjectSteal(PyObject_Str(arg_o));
+ PyObject *res_o = PyObject_Str(arg_o);
stack_pointer = _PyFrame_GetStackPointer(frame);
PyStackRef_CLOSE(arg);
- if (PyStackRef_IsNull(res)) goto pop_3_error;
+ if (res_o == NULL) goto pop_3_error;
+ res = PyStackRef_FromPyObjectSteal(res_o);
}
// _CHECK_PERIODIC
{
@@ -3028,10 +3029,11 @@
DEOPT_IF(callable_o != (PyObject *)&PyTuple_Type, CALL);
STAT_INC(CALL, hit);
_PyFrame_SetStackPointer(frame, stack_pointer);
- res = PyStackRef_FromPyObjectSteal(PySequence_Tuple(arg_o));
+ PyObject *res_o = PySequence_Tuple(arg_o);
stack_pointer = _PyFrame_GetStackPointer(frame);
PyStackRef_CLOSE(arg);
- if (PyStackRef_IsNull(res)) goto pop_3_error;
+ if (res_o == NULL) goto pop_3_error;
+ res = PyStackRef_FromPyObjectSteal(res_o);
}
// _CHECK_PERIODIC
{
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]