Remove PyRange_New().
diff --git a/Include/rangeobject.h b/Include/rangeobject.h
index 50aa061..359bcb6 100644
--- a/Include/rangeobject.h
+++ b/Include/rangeobject.h
@@ -22,8 +22,6 @@
#define PyRange_Check(op) ((op)->ob_type == &PyRange_Type)
-PyAPI_FUNC(PyObject *) PyRange_New(long, long, long, int);
-
#ifdef __cplusplus
}
#endif
diff --git a/Misc/NEWS b/Misc/NEWS
index a1dfa45..32da2f7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -32,6 +32,8 @@
C API
-----
+- Removed PyRange_New().
+
Tests
-----
diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
index dabb8d4..2f5d164 100644
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -9,51 +9,6 @@
long len;
} rangeobject;
-/* XXX PyRange_New should be deprecated. It's not documented. It's not
- * used in the core. Its error-checking is akin to Swiss cheese: accepts
- * step == 0; accepts len < 0; ignores that (len - 1) * step may overflow;
- * raises a baffling "integer addition" exception if it thinks the last
- * item is "too big"; and doesn't compute whether "last item is too big"
- * correctly even if the multiplication doesn't overflow.
- */
-PyObject *
-PyRange_New(long start, long len, long step, int reps)
-{
- rangeobject *obj;
-
- if (reps != 1) {
- PyErr_SetString(PyExc_ValueError,
- "PyRange_New's 'repetitions' argument must be 1");
- return NULL;
- }
-
- obj = PyObject_New(rangeobject, &PyRange_Type);
- if (obj == NULL)
- return NULL;
-
- if (len == 0) {
- start = 0;
- len = 0;
- step = 1;
- }
- else {
- long last = start + (len - 1) * step;
- if ((step > 0) ?
- (last > (PyInt_GetMax() - step)) :
- (last < (-1 - PyInt_GetMax() - step))) {
- PyErr_SetString(PyExc_OverflowError,
- "integer addition");
- Py_DECREF(obj);
- return NULL;
- }
- }
- obj->start = start;
- obj->len = len;
- obj->step = step;
-
- return (PyObject *) obj;
-}
-
/* Return number of items in range/xrange (lo, hi, step). step > 0
* required. Return a value < 0 if & only if the true value is too
* large to fit in a signed long.