Add definitions of INT_MAX and LONG_MAX to pyport.h.
Remove includes of limits.h and conditional definitions of INT_MAX
and LONG_MAX elsewhere.
This closes SourceForge patch #101659 and bug #115323.
#include "patchlevel.h"
#include "config.h"
+#ifdef HAVE_LIMITS_H
+#include <limits.h>
+#endif
+
/* config.h may or may not define DL_IMPORT */
#ifndef DL_IMPORT /* declarations for DLL import/export */
#define DL_IMPORT(RTYPE) RTYPE
#ifdef HAVE_LONG_LONG
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
/* Hopefully this is portable... */
-#ifndef LONG_MAX
-#define LONG_MAX 2147483647L
-#endif
#ifndef ULONG_MAX
#define ULONG_MAX 4294967295U
#endif
#endif /* fd manipulation macros */
+/* limits.h constants that may be missing */
+
+#ifndef INT_MAX
+#define INT_MAX 2147483647
+#endif
+
+#ifndef LONG_MAX
+#if SIZEOF_LONG == 4
+#define LONG_MAX 0X7FFFFFFFL
+#elif SIZEOF_LONG == 8
+#define LONG_MAX 0X7FFFFFFFFFFFFFFFL
+#else
+#error "could not set LONG_MAX in pyport.h"
+#endif
+#endif
+
+#ifndef LONG_MIN
+#define LONG_MIN (-LONG_MAX-1)
+#endif
+
+#ifdef __NeXT__
+#ifdef __sparc__
+/*
+ * This works around a bug in the NS/Sparc 3.3 pre-release
+ * limits.h header file.
+ * 10-Feb-1995 bwarsaw@cnri.reston.va.us
+ */
+#undef LONG_MIN
+#define LONG_MIN (-LONG_MAX-1)
+#endif
+#endif
+
#ifdef __cplusplus
}
#endif
#include <errno.h>
#include <locale.h>
#include <string.h>
-#include <limits.h>
#include <ctype.h>
#if defined(MS_WIN32)
#include "sre.h"
-#if defined(HAVE_LIMITS_H)
-#include <limits.h>
-#else
-#define INT_MAX 2147483647
-#endif
-
#include <ctype.h>
/* name of this module, minus the leading underscore */
#include <sys/types.h> /* For size_t */
#endif /* DONT_HAVE_SYS_TYPES_H */
#endif /* !STDC_HEADERS */
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif /* HAVE_LIMITS_H */
struct arrayobject; /* Forward */
/* UINT2 defines a two byte word */
typedef unsigned short int UINT2;
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#else
-/* Wild guess */
-#define LONG_MAX 2147483647L
-#endif
-
/* UINT4 defines a four byte word */
-#if defined(INT_MAX) && INT_MAX == 2147483647
-typedef unsigned int UINT4;
-#else
-#if defined(LONG_MAX) && LONG_MAX == 2147483647L
+#if SIZEOF_LONG == 4
typedef unsigned long int UINT4;
+#else
+#if INT_MAX == 2147483647
+typedef unsigned int UINT4;
#endif
-/* Too bad if neither is */
+/* Too bad if neither is; pyport.h would need to be fixed. */
#endif
/* ========== End global.h; continue md5.h ========== */
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
#ifdef HAVE_POLL_H
#include <poll.h>
#endif
#include "Python.h"
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#else
-#define INT_MAX 2147483647
-#endif
-
#include <ctype.h>
/* XXX This file assumes that the <ctype.h> is*() functions
XXX are defined for all 8-bit characters! */
#include "Python.h"
-#include <limits.h>
#include <ctype.h>
#include "Python.h"
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
/* elementary operations on complex numbers */
#include "Python.h"
#include "structmember.h"
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
#ifndef DONT_HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif /* DONT_HAVE_SYS_TYPES_H */
#define CHECK(x) /* Don't know how to check */
#endif
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
-#ifndef LONG_MAX
-#if SIZEOF_LONG == 4
-#define LONG_MAX 0X7FFFFFFFL
-#elif SIZEOF_LONG == 8
-#define LONG_MAX 0X7FFFFFFFFFFFFFFFL
-#else
-#error "could not set LONG_MAX"
-#endif
-#endif
-
-#ifndef LONG_MIN
-#define LONG_MIN (-LONG_MAX-1)
-#endif
-
-#ifdef __NeXT__
-#ifdef __sparc__
-/*
- * This works around a bug in the NS/Sparc 3.3 pre-release
- * limits.h header file.
- * 10-Feb-1995 bwarsaw@cnri.reston.va.us
- */
-#undef LONG_MIN
-#define LONG_MIN (-LONG_MAX-1)
-#endif
-#endif
-
#if !defined(__STDC__) && !defined(macintosh)
extern double fmod(double, double);
extern double pow(double, double);
#include "Python.h"
#include <ctype.h>
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-
-#ifndef LONG_MAX
-#define LONG_MAX 0X7FFFFFFFL
-#endif
-
-#ifndef LONG_MIN
-#define LONG_MIN (-LONG_MAX-1)
-#endif
-
#ifndef CHAR_BIT
#define CHAR_BIT 8
#endif
#else
#include <sys/types.h> /* For size_t */
#endif
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
#define ROUNDUP(n, PyTryBlock) \
((((n)+(PyTryBlock)-1)/(PyTryBlock))*(PyTryBlock))
/* Generic object operations; and implementation of None (NoObject) */
#include "Python.h"
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
#ifdef macintosh
#include "macglue.h"
int null_strings, one_strings;
#endif
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#else
-#ifndef UCHAR_MAX
+#if !defined(HAVE_LIMITS_H) && !defined(UCHAR_MAX)
#define UCHAR_MAX 255
#endif
-#endif
static PyStringObject *characters[UCHAR_MAX + 1];
#ifndef DONT_SHARE_SHORT_STRINGS
#include "unicodeobject.h"
#include "ucnhash.h"
-#if defined(HAVE_LIMITS_H)
-#include <limits.h>
-#else
-#define INT_MAX 2147483647
-#endif
-
#ifdef MS_WIN32
#include <windows.h>
#endif
*/
#include "Python.h"
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
int (*PyOS_InputHook)(void) = NULL;
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
/* Forward */
static PyObject *filterstring(PyObject *, PyObject *);
#include <ctype.h>
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#else
-#define INT_MAX 2147483647
-#endif
-
/* Turn this on if your compiler chokes on the big switch: */
/* #define CASE_TOO_BIG 1 */
#include "Python.h"
#include <ctype.h>
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
/* --- Globals ------------------------------------------------------------ */
#include "structmember.h"
#include <ctype.h>
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
-#ifndef INT_MAX
-#define INT_MAX 2147483647
-#endif
/* Three symbols from graminit.h are also defined in Python.h, with
Py_ prefixes to their names. Python.h can't include graminit.h
#include "Python.h"
#include <ctype.h>
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
int PyArg_Parse(PyObject *, char *, ...);
/* Module support implementation */
#include "Python.h"
-#ifdef HAVE_LIMITS_H
-#include <limits.h>
-#endif
#ifdef MPW /* MPW pushes 'extended' for float and double types with varargs */
typedef extended va_double;