From fd963265e21686fb306eaa3f0e63c15bfdbcc9ba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= <martin@v.loewis.de>
Date: Fri, 9 Feb 2007 12:19:32 +0000
Subject: Bug #1653736: Properly discard third argument to
 slot_nb_inplace_power. Will backport.

---
 Misc/NEWS            | 2 ++
 Objects/typeobject.c | 8 +++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/Misc/NEWS b/Misc/NEWS
index 25b72c2..faf7d2d 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@ What's New in Python 2.6 alpha 1?
 Core and builtins
 -----------------
 
+- Bug #1653736: Properly discard third argument to slot_nb_inplace_power.
+
 - PEP 352: Raising a string exception now triggers a TypeError.  Attempting to
   catch a string exception raises DeprecationWarning.
 
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 6ea489a..20b530c 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -4427,7 +4427,13 @@ SLOT1(slot_nb_inplace_subtract, "__isub__", PyObject *, "O")
 SLOT1(slot_nb_inplace_multiply, "__imul__", PyObject *, "O")
 SLOT1(slot_nb_inplace_divide, "__idiv__", PyObject *, "O")
 SLOT1(slot_nb_inplace_remainder, "__imod__", PyObject *, "O")
-SLOT1(slot_nb_inplace_power, "__ipow__", PyObject *, "O")
+/* Can't use SLOT1 here, because nb_inplace_power is ternary */
+static PyObject * 
+slot_nb_inplace_power(PyObject *self, PyObject * arg1, PyObject *arg2) 
+{ 
+  static PyObject *cache_str; 
+  return call_method(self, "__ipow__", &cache_str, "(" "O" ")", arg1); 
+}
 SLOT1(slot_nb_inplace_lshift, "__ilshift__", PyObject *, "O")
 SLOT1(slot_nb_inplace_rshift, "__irshift__", PyObject *, "O")
 SLOT1(slot_nb_inplace_and, "__iand__", PyObject *, "O")
-- 
cgit v0.12

