Issue 2582: Fix pickling of range objects.
diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c
index cd5a804..f9a9cc9 100644
--- a/Objects/rangeobject.c
+++ b/Objects/rangeobject.c
@@ -252,6 +252,14 @@
                                     r->start, r->stop, r->step);
 }
 
+/* Pickling support */
+static PyObject *
+range_reduce(rangeobject *r, PyObject *args)
+{
+	return Py_BuildValue("(O(OOO))", Py_TYPE(r),
+                         r->start, r->stop, r->step);
+}
+
 static PySequenceMethods range_as_sequence = {
     (lenfunc)range_length,	/* sq_length */
     0,			/* sq_concat */
@@ -269,6 +277,7 @@
 static PyMethodDef range_methods[] = {
     {"__reversed__",	(PyCFunction)range_reverse, METH_NOARGS,
 	reverse_doc},
+    {"__reduce__",	(PyCFunction)range_reduce, METH_VARARGS},
     {NULL,		NULL}		/* sentinel */
 };