[issue36379] nb_inplace_pow is always called with an invalid argument
Stefan Krah
report at bugs.python.org
Wed Mar 20 14:27:00 EDT 2019
Stefan Krah <stefan at bytereef.org> added the comment:
Ok, got it. I think __ipow__ should be a ternaryfunc, like so:
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 403f3caaee..914d076b5c 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -7032,7 +7032,7 @@ static slotdef slotdefs[] = {
IBSLOT("__imod__", nb_inplace_remainder, slot_nb_inplace_remainder,
wrap_binaryfunc, "%="),
IBSLOT("__ipow__", nb_inplace_power, slot_nb_inplace_power,
- wrap_binaryfunc, "**="),
+ wrap_ternaryfunc, "**="),
IBSLOT("__ilshift__", nb_inplace_lshift, slot_nb_inplace_lshift,
wrap_binaryfunc, "<<="),
IBSLOT("__irshift__", nb_inplace_rshift, slot_nb_inplace_rshift,
On the other hand it is odd if "**=" can never use the third argument.
----------
nosy: +rhettinger
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue36379>
_______________________________________
More information about the Python-bugs-list
mailing list