diff options
author | Georg Brandl <georg@python.org> | 2006-09-25 06:58:00 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2006-09-25 06:58:00 (GMT) |
commit | 934c90de0de8a0fd5f07b483b18d98beb857dbd9 (patch) | |
tree | 29264686d9cda5c7c1d945b2d3bc5c97ff843786 | |
parent | b14b59fcf9325bc803763c4aad036cb12f9d7978 (diff) | |
download | cpython-934c90de0de8a0fd5f07b483b18d98beb857dbd9.zip cpython-934c90de0de8a0fd5f07b483b18d98beb857dbd9.tar.gz cpython-934c90de0de8a0fd5f07b483b18d98beb857dbd9.tar.bz2 |
Backport rev. 51971:
Fix %zd string formatting on Mac OS X so it prints negative numbers.
In addition to testing positive numbers, verify negative numbers work in configure.
In order to avoid compiler warnings on OS X 10.4, also change the order of the check
for the format character to use (PY_FORMAT_SIZE_T) in the sprintf format
for Py_ssize_t. This patch changes PY_FORMAT_SIZE_T from "" to "l" if it wasn't
defined at configure time. Need to verify the buildbot results.
-rw-r--r-- | Include/pyport.h | 2 | ||||
-rw-r--r-- | Misc/NEWS | 2 | ||||
-rwxr-xr-x | configure | 20 | ||||
-rw-r--r-- | configure.in | 20 |
4 files changed, 37 insertions, 7 deletions
diff --git a/Include/pyport.h b/Include/pyport.h index be6c51f..8f8e514 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -126,7 +126,7 @@ typedef Py_intptr_t Py_ssize_t; * Py_ssize_t on the platform. */ #ifndef PY_FORMAT_SIZE_T -# if SIZEOF_SIZE_T == SIZEOF_INT +# if SIZEOF_SIZE_T == SIZEOF_INT && !defined(__APPLE__) # define PY_FORMAT_SIZE_T "" # elif SIZEOF_SIZE_T == SIZEOF_LONG # define PY_FORMAT_SIZE_T "l" @@ -16,6 +16,8 @@ Core and builtins not being recognized as a keyword after, e.g., this statement: from __future__ import division, with_statement +- Fix %zd string formatting on Mac OS X so it prints negative numbers. + - Allow exception instances to be directly sliced again. @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Revision: 51173 . +# From configure.in Revision: 51727 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.59 for python 2.5. # @@ -22110,12 +22110,26 @@ cat >>conftest.$ac_ext <<_ACEOF int main() { - char buffer[4]; + char buffer[256]; + +#ifdef HAVE_SSIZE_T +typedef ssize_t Py_ssize_t; +#elif SIZEOF_VOID_P == SIZEOF_LONG +typedef long Py_ssize_t; +#else +typedef int Py_ssize_t; +#endif if(sprintf(buffer, "%zd", (size_t)123) < 0) return 1; - if (strncmp(buffer, "123", 3)) + if (strcmp(buffer, "123")) + return 1; + + if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0) + return 1; + + if (strcmp(buffer, "-123")) return 1; return 0; diff --git a/configure.in b/configure.in index 410f1af..711e19e 100644 --- a/configure.in +++ b/configure.in @@ -3352,14 +3352,28 @@ AC_TRY_RUN([#include <stdio.h> int main() { - char buffer[4]; + char buffer[256]; + +#ifdef HAVE_SSIZE_T +typedef ssize_t Py_ssize_t; +#elif SIZEOF_VOID_P == SIZEOF_LONG +typedef long Py_ssize_t; +#else +typedef int Py_ssize_t; +#endif if(sprintf(buffer, "%zd", (size_t)123) < 0) return 1; - if (strncmp(buffer, "123", 3)) + if (strcmp(buffer, "123")) return 1; - + + if (sprintf(buffer, "%zd", (Py_ssize_t)-123) < 0) + return 1; + + if (strcmp(buffer, "-123")) + return 1; + return 0; }], [AC_MSG_RESULT(yes) |