bpo-35452: Make PySys_HasWarnOptions() never raising an exception. (GH-11075)

(cherry picked from commit dffccc6b594951fc798973e521da205785823f0f)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index a048507..efe5b29 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1823,7 +1823,8 @@
 PySys_HasWarnOptions(void)
 {
     PyObject *warnoptions = _PySys_GetObjectId(&PyId_warnoptions);
-    return (warnoptions != NULL && (PyList_Size(warnoptions) > 0)) ? 1 : 0;
+    return (warnoptions != NULL && PyList_Check(warnoptions)
+            && PyList_GET_SIZE(warnoptions) > 0);
 }
 
 static PyObject *