mirror of
https://github.com/python/cpython.git
synced 2025-11-28 14:11:15 +00:00
Fix for SF bug #115987: PyInstance_HalfBinOp does not initialize the
result-object-pointer that is passed in, when an exception occurs during coercion. The pointer has to be explicitly initialized in the caller to avoid putting trash on the Python stack.
This commit is contained in:
parent
7a90db6131
commit
dc9100f57d
1 changed files with 11 additions and 11 deletions
|
|
@ -651,7 +651,7 @@ PyObject *
|
||||||
PyNumber_InPlaceOr(PyObject *v, PyObject *w)
|
PyNumber_InPlaceOr(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__ior__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__ior__", &x,
|
||||||
|
|
@ -683,7 +683,7 @@ PyObject *
|
||||||
PyNumber_InPlaceXor(PyObject *v, PyObject *w)
|
PyNumber_InPlaceXor(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__ixor__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__ixor__", &x,
|
||||||
|
|
@ -715,7 +715,7 @@ PyObject *
|
||||||
PyNumber_InPlaceAnd(PyObject *v, PyObject *w)
|
PyNumber_InPlaceAnd(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__iand__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__iand__", &x,
|
||||||
|
|
@ -747,7 +747,7 @@ PyObject *
|
||||||
PyNumber_InPlaceLshift(PyObject *v, PyObject *w)
|
PyNumber_InPlaceLshift(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__ilshift__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__ilshift__", &x,
|
||||||
|
|
@ -779,7 +779,7 @@ PyObject *
|
||||||
PyNumber_InPlaceRshift(PyObject *v, PyObject *w)
|
PyNumber_InPlaceRshift(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__irshift__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__irshift__", &x,
|
||||||
|
|
@ -811,7 +811,7 @@ PyObject *
|
||||||
PyNumber_InPlaceAdd(PyObject *v, PyObject *w)
|
PyNumber_InPlaceAdd(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__iadd__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__iadd__", &x,
|
||||||
|
|
@ -855,7 +855,7 @@ PyObject *
|
||||||
PyNumber_InPlaceSubtract(PyObject *v, PyObject *w)
|
PyNumber_InPlaceSubtract(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__isub__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__isub__", &x,
|
||||||
|
|
@ -888,7 +888,7 @@ PyNumber_InPlaceMultiply(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject * (*g)(PyObject *, int) = NULL;
|
PyObject * (*g)(PyObject *, int) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__imul__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__imul__", &x,
|
||||||
|
|
@ -955,7 +955,7 @@ PyObject *
|
||||||
PyNumber_InPlaceDivide(PyObject *v, PyObject *w)
|
PyNumber_InPlaceDivide(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__idiv__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__idiv__", &x,
|
||||||
|
|
@ -987,7 +987,7 @@ PyObject *
|
||||||
PyNumber_InPlaceRemainder(PyObject *v, PyObject *w)
|
PyNumber_InPlaceRemainder(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__imod__", &x,
|
if (PyInstance_HalfBinOp(v, w, "__imod__", &x,
|
||||||
|
|
@ -1026,7 +1026,7 @@ static PyObject *
|
||||||
do_inplace_pow(PyObject *v, PyObject *w)
|
do_inplace_pow(PyObject *v, PyObject *w)
|
||||||
{
|
{
|
||||||
PyObject * (*f)(PyObject *, PyObject *, PyObject *) = NULL;
|
PyObject * (*f)(PyObject *, PyObject *, PyObject *) = NULL;
|
||||||
PyObject *x;
|
PyObject *x = NULL;
|
||||||
|
|
||||||
if (PyInstance_Check(v)) {
|
if (PyInstance_Check(v)) {
|
||||||
if (PyInstance_HalfBinOp(v, w, "__ipow__", &x, do_pow, 0) <= 0)
|
if (PyInstance_HalfBinOp(v, w, "__ipow__", &x, do_pow, 0) <= 0)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue