mpatch: Define Py_ssize_t for old pythons and use it instead of ssize_t.
authorShun-ichi GOTO <shunichi.goto@gmail.com>
Fri, 12 Oct 2007 11:46:49 +0900
changeset 5459 b0e5f44fdeb3
parent 5457 7372b6bbc5e6
child 5460 fe9b0bb3eb1c
mpatch: Define Py_ssize_t for old pythons and use it instead of ssize_t. See also PEP 353. NOTE: Microsoft compilers (8 or earlier) does not have ssize_t.
mercurial/mpatch.c
--- a/mercurial/mpatch.c	Thu Oct 11 17:46:06 2007 -0500
+++ b/mercurial/mpatch.c	Fri Oct 12 11:46:49 2007 +0900
@@ -24,6 +24,16 @@
 #include <stdlib.h>
 #include <string.h>
 
+/* Definitions to get compatibility with python 2.4 and earlier which
+   does not have Py_ssize_t. See also PEP 353.
+   Note: msvc (8 or earlier) does not have ssize_t, so we use Py_ssize_t.
+*/
+#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
+typedef int Py_ssize_t;
+#define PY_SSIZE_T_MAX INT_MAX
+#define PY_SSIZE_T_MIN INT_MIN
+#endif
+
 #ifdef _WIN32
 # ifdef _MSC_VER
 /* msvc 6.0 has problems */
@@ -312,7 +322,7 @@
 static struct flist *fold(PyObject *bins, int start, int end)
 {
 	int len;
-	ssize_t blen;
+	Py_ssize_t blen;
 	const char *buffer;
 
 	if (start + 1 == end) {
@@ -339,7 +349,7 @@
 	const char *in;
 	char *out;
 	int len, outlen;
-	ssize_t inlen;
+	Py_ssize_t inlen;
 
 	if (!PyArg_ParseTuple(args, "OO:mpatch", &text, &bins))
 		return NULL;