diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst index 83559862512..a7ba6607405 100644 --- a/Doc/c-api/typeobj.rst +++ b/Doc/c-api/typeobj.rst @@ -1057,7 +1057,7 @@ Number Object Structures binaryfunc nb_xor; binaryfunc nb_or; unaryfunc nb_int; - unaryfunc nb_long; + void *nb_reserved; unaryfunc nb_float; binaryfunc nb_inplace_add; @@ -1088,6 +1088,12 @@ Number Object Structures ``Py_NotImplemented``, if another error occurred they must return ``NULL`` and set an exception. + .. note:: + + The :cdata:`nb_reserved` field should always be ``NULL``. It + was previously called :cdata:`nb_long`, and was renamed in + Python 3.0.1. + .. _mapping-structs: diff --git a/Include/object.h b/Include/object.h index f3fdbda44d9..b1391ca3a00 100644 --- a/Include/object.h +++ b/Include/object.h @@ -219,7 +219,7 @@ typedef struct { binaryfunc nb_xor; binaryfunc nb_or; unaryfunc nb_int; - unaryfunc nb_long; + void *nb_reserved; /* the slot formerly known as nb_long */ unaryfunc nb_float; binaryfunc nb_inplace_add; diff --git a/Misc/NEWS b/Misc/NEWS index 28cd6b6d8f5..69c42d27b3f 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 3.1 alpha 0 Core and Builtins ----------------- +- Issue #4910: Rename nb_long slot to nb_reserved, and change its + type to (void *). + - Issue #4935: The overflow checking code in the expandtabs() method common to str, bytes and bytearray could be optimized away by the compiler, letting the interpreter segfault instead of raising an error. diff --git a/Modules/datetimemodule.c b/Modules/datetimemodule.c index 702b6b984bb..98ae2bd2244 100644 --- a/Modules/datetimemodule.c +++ b/Modules/datetimemodule.c @@ -2111,7 +2111,7 @@ static PyNumberMethods delta_as_number = { 0, /*nb_xor*/ 0, /*nb_or*/ 0, /*nb_int*/ - 0, /*nb_long*/ + 0, /*nb_reserved*/ 0, /*nb_float*/ 0, /*nb_inplace_add*/ 0, /*nb_inplace_subtract*/ diff --git a/Objects/boolobject.c b/Objects/boolobject.c index 6916b9f8035..eac31b99435 100644 --- a/Objects/boolobject.c +++ b/Objects/boolobject.c @@ -109,7 +109,7 @@ static PyNumberMethods bool_as_number = { bool_xor, /* nb_xor */ bool_or, /* nb_or */ 0, /* nb_int */ - 0, /* nb_long */ + 0, /* nb_reserved */ 0, /* nb_float */ 0, /* nb_inplace_add */ 0, /* nb_inplace_subtract */ diff --git a/Objects/complexobject.c b/Objects/complexobject.c index a7fd7dc5583..879d71c5652 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -1060,7 +1060,7 @@ static PyNumberMethods complex_as_number = { 0, /* nb_xor */ 0, /* nb_or */ complex_int, /* nb_int */ - 0, /* nb_long */ + 0, /* nb_reserved */ complex_float, /* nb_float */ 0, /* nb_inplace_add */ 0, /* nb_inplace_subtract */ diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 7292ca56897..a3c4e455483 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -1798,7 +1798,7 @@ static PyNumberMethods float_as_number = { 0, /*nb_xor*/ 0, /*nb_or*/ float_trunc, /*nb_int*/ - 0, /*nb_long*/ + 0, /*nb_reserved*/ float_float, /*nb_float*/ 0, /* nb_inplace_add */ 0, /* nb_inplace_subtract */ diff --git a/Objects/longobject.c b/Objects/longobject.c index 259f7c57a04..b7ba7960ea0 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -3830,7 +3830,7 @@ static PyNumberMethods long_as_number = { long_xor, /*nb_xor*/ long_or, /*nb_or*/ long_long, /*nb_int*/ - 0, /*nb_long*/ + 0, /*nb_reserved*/ long_float, /*nb_float*/ 0, /* nb_inplace_add */ 0, /* nb_inplace_subtract */ diff --git a/Objects/setobject.c b/Objects/setobject.c index d3243dd77a3..d5d96cad03e 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -2082,7 +2082,7 @@ static PyNumberMethods set_as_number = { (binaryfunc)set_xor, /*nb_xor*/ (binaryfunc)set_or, /*nb_or*/ 0, /*nb_int*/ - 0, /*nb_long*/ + 0, /*nb_reserved*/ 0, /*nb_float*/ 0, /*nb_inplace_add*/ (binaryfunc)set_isub, /*nb_inplace_subtract*/ diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 8921b5fd189..b02f108e198 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -3602,7 +3602,6 @@ inherit_slots(PyTypeObject *type, PyTypeObject *base) COPYNUM(nb_xor); COPYNUM(nb_or); COPYNUM(nb_int); - COPYNUM(nb_long); COPYNUM(nb_float); COPYNUM(nb_inplace_add); COPYNUM(nb_inplace_subtract); @@ -4827,7 +4826,6 @@ SLOT1BIN(slot_nb_xor, nb_xor, "__xor__", "__rxor__") SLOT1BIN(slot_nb_or, nb_or, "__or__", "__ror__") SLOT0(slot_nb_int, "__int__") -SLOT0(slot_nb_long, "__long__") SLOT0(slot_nb_float, "__float__") SLOT1(slot_nb_inplace_add, "__iadd__", PyObject *, "O") SLOT1(slot_nb_inplace_subtract, "__isub__", PyObject *, "O") @@ -5443,8 +5441,6 @@ static slotdef slotdefs[] = { RBINSLOT("__ror__", nb_or, slot_nb_or, "|"), UNSLOT("__int__", nb_int, slot_nb_int, wrap_unaryfunc, "int(x)"), - UNSLOT("__long__", nb_long, slot_nb_long, wrap_unaryfunc, - "int(x)"), UNSLOT("__float__", nb_float, slot_nb_float, wrap_unaryfunc, "float(x)"), NBSLOT("__index__", nb_index, slot_nb_index, wrap_unaryfunc, diff --git a/Objects/weakrefobject.c b/Objects/weakrefobject.c index 538b21cbf49..b65e5fdd34d 100644 --- a/Objects/weakrefobject.c +++ b/Objects/weakrefobject.c @@ -594,7 +594,7 @@ static PyNumberMethods proxy_as_number = { proxy_xor, /*nb_xor*/ proxy_or, /*nb_or*/ proxy_int, /*nb_int*/ - 0, /*nb_long*/ + 0, /*nb_reserved*/ proxy_float, /*nb_float*/ proxy_iadd, /*nb_inplace_add*/ proxy_isub, /*nb_inplace_subtract*/ diff --git a/PC/winreg.c b/PC/winreg.c index 7316fcd94e5..3abefa8437e 100644 --- a/PC/winreg.c +++ b/PC/winreg.c @@ -451,7 +451,7 @@ static PyNumberMethods PyHKEY_NumberMethods = PyHKEY_binaryFailureFunc, /* nb_xor */ PyHKEY_binaryFailureFunc, /* nb_or */ PyHKEY_intFunc, /* nb_int */ - 0, /* nb_long */ + 0, /* nb_reserved */ PyHKEY_unaryFailureFunc, /* nb_float */ };