SF bug #800796:  Difference between hash() and __hash__()

slice(5).__hash__() now raises a TypeError.
diff --git a/Objects/sliceobject.c b/Objects/sliceobject.c
index 796df2b..c37af2b 100644
--- a/Objects/sliceobject.c
+++ b/Objects/sliceobject.c
@@ -278,6 +278,13 @@
 	return result;
 }
 
+static long
+slice_hash(PySliceObject *v)
+{
+	PyErr_SetString(PyExc_TypeError, "unhashable type");
+	return -1L;
+}
+
 PyTypeObject PySlice_Type = {
 	PyObject_HEAD_INIT(&PyType_Type)
 	0,			/* Number of items for varobject */
@@ -293,7 +300,7 @@
 	0,					/* tp_as_number */
 	0,	    				/* tp_as_sequence */
 	0,					/* tp_as_mapping */
-	0,					/* tp_hash */
+	(hashfunc)slice_hash,			/* tp_hash */
 	0,					/* tp_call */
 	0,					/* tp_str */
 	PyObject_GenericGetAttr,		/* tp_getattro */