summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
authorInada Naoki <songofacandy@gmail.com>2019-08-30 23:48:12 (GMT)
committerGitHub <noreply@github.com>2019-08-30 23:48:12 (GMT)
commitd765d81b8fb5ab707bfe8b079348e5038c298aa3 (patch)
tree8eb18d61ea2cf46dde2fe6c827ffd62ba705f1a9 /Include
parent39d87b54715197ca9dcb6902bb43461c0ed701a2 (diff)
downloadcpython-d765d81b8fb5ab707bfe8b079348e5038c298aa3.zip
cpython-d765d81b8fb5ab707bfe8b079348e5038c298aa3.tar.gz
cpython-d765d81b8fb5ab707bfe8b079348e5038c298aa3.tar.bz2
bpo-37781: use "z" for PY_FORMAT_SIZE_T (GH-15156)
MSVC 2015 supports %zd / %zu. "z" is portable enough nowadays.
Diffstat (limited to 'Include')
-rw-r--r--Include/pyport.h19
1 files changed, 6 insertions, 13 deletions
diff --git a/Include/pyport.h b/Include/pyport.h
index 32d98c5..1941500 100644
--- a/Include/pyport.h
+++ b/Include/pyport.h
@@ -133,8 +133,9 @@ typedef int Py_ssize_clean_t;
/* PY_FORMAT_SIZE_T is a platform-specific modifier for use in a printf
* format to convert an argument with the width of a size_t or Py_ssize_t.
- * C99 introduced "z" for this purpose, but not all platforms support that;
- * e.g., MS compilers use "I" instead.
+ * C99 introduced "z" for this purpose, but old MSVCs had not supported it.
+ * Since MSVC supports "z" since (at least) 2015, we can just use "z"
+ * for new code.
*
* These "high level" Python format functions interpret "z" correctly on
* all platforms (Python interprets the format string itself, and does whatever
@@ -152,19 +153,11 @@ typedef int Py_ssize_clean_t;
* Py_ssize_t index;
* fprintf(stderr, "index %" PY_FORMAT_SIZE_T "d sucks\n", index);
*
- * That will expand to %ld, or %Id, or to something else correct for a
- * Py_ssize_t on the platform.
+ * That will expand to %zd or to something else correct for a Py_ssize_t on
+ * the platform.
*/
#ifndef PY_FORMAT_SIZE_T
-# 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"
-# elif defined(MS_WINDOWS)
-# define PY_FORMAT_SIZE_T "I"
-# else
-# error "This platform's pyconfig.h needs to define PY_FORMAT_SIZE_T"
-# endif
+# define PY_FORMAT_SIZE_T "z"
#endif
/* Py_LOCAL can be used instead of static to get the fastest possible calling