summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEzio Melotti <ezio.melotti@gmail.com>2011-04-15 08:19:32 +0300
committerEzio Melotti <ezio.melotti@gmail.com>2011-04-15 08:19:32 +0300
commita15f614a0cc7bc76bac0fa1a6e050967ca1bacd7 (patch)
tree4828ba2529f3f8ef6c0d688dfb35ffc6f4b88283
parent5ee8cb1201e2c926f8c9c8cd6a79c054746f57b6 (diff)
parent982ef4e0bc2b1def1117238fb5292cca5dfa2891 (diff)
downloadcpython-git-a15f614a0cc7bc76bac0fa1a6e050967ca1bacd7.tar.gz
#11845: Merge with 3.2.
-rw-r--r--Lib/test/test_range.py9
-rw-r--r--Misc/NEWS3
-rw-r--r--Objects/rangeobject.c2
3 files changed, 13 insertions, 1 deletions
diff --git a/Lib/test/test_range.py b/Lib/test/test_range.py
index fc310c1534..ede07912b0 100644
--- a/Lib/test/test_range.py
+++ b/Lib/test/test_range.py
@@ -498,6 +498,15 @@ class RangeTest(unittest.TestCase):
]:
self.assertEqual(list(reversed(r)), list(r)[::-1])
+ def test_issue11845(self):
+ r = range(*slice(1, 18, 2).indices(20))
+ values = {None, 0, 1, -1, 2, -2, 5, -5, 19, -19,
+ 20, -20, 21, -21, 30, -30, 99, -99}
+ for i in values:
+ for j in values:
+ for k in values - {0}:
+ r[i:j:k]
+
def test_main():
test.support.run_unittest(RangeTest)
diff --git a/Misc/NEWS b/Misc/NEWS
index bf75d8b6dc..553adcd8e8 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@ What's New in Python 3.3 Alpha 1?
Core and Builtins
-----------------
+- Issue #11845: Fix typo in rangeobject.c that caused a crash in
+ compute_slice_indices. Patch by Daniel Urban.
+
- Issue #5673: Added a `timeout` keyword argument to subprocess.Popen.wait,
subprocess.Popen.communicated, subprocess.call, subprocess.check_call, and
subprocess.check_output. If the blocking operation takes more than `timeout`
diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
index cff2ce4741..58d373c0b9 100644
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -472,7 +472,7 @@ compute_slice_indices(rangeobject *r, PySliceObject *slice,
if (tmp_stop == NULL) goto Fail;
} else {
tmp_stop = r->length;
- Py_INCREF(tmp_start);
+ Py_INCREF(tmp_stop);
}
}
}