diff Python/getargs.c @ 44072:2f47b228ba06 legacy-trunk

Issue #1521: on 64bit platforms, str.decode fails on very long strings. The t# and w# formats were not correctly handled. Will backport.
author Amaury Forgeot d'Arc <amauryfa@gmail.com>
date Fri, 30 Nov 2007 20:51:40 +0000
parents 6ba402b60041
children bf1ab3bf799c
line wrap: on
line diff
--- a/Python/getargs.c	Fri Nov 30 20:37:22 2007 +0000
+++ b/Python/getargs.c	Fri Nov 30 20:51:40 2007 +0000
@@ -894,7 +894,8 @@
 		char **buffer;
 		const char *encoding;
 		PyObject *s;
-		int size, recode_strings;
+		Py_ssize_t size;
+		int recode_strings;
 
 		/* Get 'e' parameter: the encoding name */
 		encoding = (const char *)va_arg(*p_va, const char *);
@@ -1144,7 +1145,7 @@
 	case 'w': { /* memory buffer, read-write access */
 		void **p = va_arg(*p_va, void **);
 		PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
-		int count;
+		Py_ssize_t count;
 			
 		if (pb == NULL || 
 		    pb->bf_getwritebuffer == NULL ||
@@ -1166,7 +1167,7 @@
 	case 't': { /* 8-bit character buffer, read-only access */
 		char **p = va_arg(*p_va, char **);
 		PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
-		int count;
+		Py_ssize_t count;
 		
 		if (*format++ != '#')
 			return converterr(