From 44759bcf13d6b47323fd4c6e4d62b7146ed0a5b1 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 8 Oct 2016 21:43:11 +0300 Subject: Issue #28376: The constructor of range_iterator now checks that step is not 0. Patch by Oren Milman. --- Objects/rangeobject.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'Objects/rangeobject.c') diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c index 288be4fb69..899697aa3a 100644 --- a/Objects/rangeobject.c +++ b/Objects/rangeobject.c @@ -937,12 +937,20 @@ rangeiter_new(PyTypeObject *type, PyObject *args, PyObject *kw) { long start, stop, step; - if (!_PyArg_NoKeywords("rangeiter()", kw)) + if (!_PyArg_NoKeywords("range_iterator()", kw)) { return NULL; + } - if (!PyArg_ParseTuple(args, "lll;rangeiter() requires 3 int arguments", - &start, &stop, &step)) + if (!PyArg_ParseTuple(args, + "lll;range_iterator() requires 3 int arguments", + &start, &stop, &step)) { + return NULL; + } + if (step == 0) { + PyErr_SetString(PyExc_ValueError, + "range_iterator() arg 3 must not be zero"); return NULL; + } return fast_range_iter(start, stop, step); } -- cgit v1.2.1 From c7f490c8b19d5458d692f243279f7ad898f13ec4 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 8 Oct 2016 21:50:45 +0300 Subject: Issue #28376: Creating instances of range_iterator by calling range_iterator type now is deprecated. Patch by Oren Milman. --- Objects/rangeobject.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'Objects/rangeobject.c') diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c index eb1861192d..8449fc7a24 100644 --- a/Objects/rangeobject.c +++ b/Objects/rangeobject.c @@ -930,6 +930,13 @@ rangeiter_new(PyTypeObject *type, PyObject *args, PyObject *kw) { long start, stop, step; + if (PyErr_WarnEx(PyExc_DeprecationWarning, + "range_iterator(): creating instances of range_iterator " + "by calling range_iterator type is deprecated", + 1)) { + return NULL; + } + if (!_PyArg_NoKeywords("range_iterator()", kw)) { return NULL; } -- cgit v1.2.1