Issue #15989: Fixed some scarcely probable integer overflows.
It is very unlikely that they can occur in real code for now.
diff --git a/Python/Python-ast.c b/Python/Python-ast.c
index 8a2dc7c..fd7f17e 100644
--- a/Python/Python-ast.c
+++ b/Python/Python-ast.c
@@ -769,7 +769,7 @@
         return 1;
     }
 
-    i = (int)PyLong_AsLong(obj);
+    i = _PyLong_AsInt(obj);
     if (i == -1 && PyErr_Occurred())
         return 1;
     *out = i;
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index ebedd12..1a5dab5 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -431,7 +431,7 @@
 parse_syntax_error(PyObject *err, PyObject **message, PyObject **filename,
                    int *lineno, int *offset, PyObject **text)
 {
-    long hold;
+    int hold;
     PyObject *v;
     _Py_IDENTIFIER(msg);
     _Py_IDENTIFIER(filename);
@@ -464,11 +464,11 @@
     v = _PyObject_GetAttrId(err, &PyId_lineno);
     if (!v)
         goto finally;
-    hold = PyLong_AsLong(v);
+    hold = _PyLong_AsInt(v);
     Py_DECREF(v);
     if (hold < 0 && PyErr_Occurred())
         goto finally;
-    *lineno = (int)hold;
+    *lineno = hold;
 
     v = _PyObject_GetAttrId(err, &PyId_offset);
     if (!v)
@@ -477,11 +477,11 @@
         *offset = -1;
         Py_DECREF(v);
     } else {
-        hold = PyLong_AsLong(v);
+        hold = _PyLong_AsInt(v);
         Py_DECREF(v);
         if (hold < 0 && PyErr_Occurred())
             goto finally;
-        *offset = (int)hold;
+        *offset = hold;
     }
 
     v = _PyObject_GetAttrId(err, &PyId_text);