From 665174834aadddbec4884d2e2673832b10f1a83c Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Fri, 3 Dec 2004 11:45:13 +0000 Subject: [PATCH] Remove PyRange_New(). --- Include/rangeobject.h | 2 -- Misc/NEWS | 2 ++ Objects/rangeobject.c | 45 ------------------------------------------- 3 files changed, 2 insertions(+), 47 deletions(-) diff --git a/Include/rangeobject.h b/Include/rangeobject.h index 50aa0619e1a..359bcb69f5b 100644 --- a/Include/rangeobject.h +++ b/Include/rangeobject.h @@ -22,8 +22,6 @@ PyAPI_DATA(PyTypeObject) PyRange_Type; #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 a1dfa457cee..32da2f76c74 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -32,6 +32,8 @@ Build C API ----- +- Removed PyRange_New(). + Tests ----- diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c index dabb8d4ae3d..2f5d164d9a8 100644 --- a/Objects/rangeobject.c +++ b/Objects/rangeobject.c @@ -9,51 +9,6 @@ typedef struct { 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.