bpo-30281: Fix the default value for stop in PySlice_Unpack() (#1531) (#1480)

diff --git a/Objects/sliceobject.c b/Objects/sliceobject.c
index 64be927..c66e057 100644
--- a/Objects/sliceobject.c
+++ b/Objects/sliceobject.c
@@ -137,6 +137,8 @@
     PySliceObject *r = (PySliceObject *)_r;
     /* this is harder to get right than you might think */
 
+    assert(PY_SSIZE_T_MIN + 1 <= -PY_SSIZE_T_MAX);
+
     if (r->step == Py_None) {
         *step = 1;
     }
@@ -157,14 +159,14 @@
     }
 
     if (r->start == Py_None) {
-        *start = *step < 0 ? PY_SSIZE_T_MAX-1 : 0;;
+        *start = *step < 0 ? PY_SSIZE_T_MAX : 0;
     }
     else {
         if (!_PyEval_SliceIndex(r->start, start)) return -1;
     }
 
     if (r->stop == Py_None) {
-        *stop = *step < 0 ? -PY_SSIZE_T_MAX : PY_SSIZE_T_MAX;
+        *stop = *step < 0 ? PY_SSIZE_T_MIN : PY_SSIZE_T_MAX;
     }
     else {
         if (!_PyEval_SliceIndex(r->stop, stop)) return -1;
@@ -198,7 +200,7 @@
             *stop = (step < 0) ? -1 : 0;
         }
     }
-    else  if (*stop >= length) {
+    else if (*stop >= length) {
         *stop = (step < 0) ? length - 1 : length;
     }