Commit fffe642d67b for php.net

commit fffe642d67bc5f11f353562cc4032b7eac185a8e
Author: Peter Kokot <peterkokot@gmail.com>
Date:   Sat Jun 28 20:16:12 2025 +0200

    Remove HAVE_PTRDIFF_T and SIZEOF_PTRDIFF_T (#18968)

    The ptrdiff_t is a C89 standard type defined in `<stddef.h>` and widely
    available on current platforms. Using it conditionally as in these
    occurrences is not needed anymore.

diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS
index acc9612b72e..47cae00b095 100644
--- a/UPGRADING.INTERNALS
+++ b/UPGRADING.INTERNALS
@@ -50,6 +50,9 @@ PHP 8.5 INTERNALS UPGRADE NOTES
 2. Build system changes
 ========================

+- Abstract
+  . Preprocessor macro SIZEOF_PTRDIFF_T has been removed.
+
 - Windows build system changes
   . SAPI() and ADD_SOURCES() now suport the optional `duplicate_sources`
     parameter.  If truthy, no rules to build the object files are generated.
@@ -69,6 +72,7 @@ PHP 8.5 INTERNALS UPGRADE NOTES
   . Autoconf macro PHP_DEF_HAVE has been removed (use AC_DEFINE).
   . Autoconf macro PHP_OUTPUT has been removed (use AC_CONFIG_FILES).
   . Autoconf macro PHP_TEST_BUILD has been removed (use AC_* macros).
+  . Preprocessor macro HAVE_PTRDIFF_T has been removed.

 ========================
 3. Module changes
diff --git a/configure.ac b/configure.ac
index e4bd8162a2e..f6f305ba053 100644
--- a/configure.ac
+++ b/configure.ac
@@ -454,7 +454,6 @@ AC_CHECK_TYPES([socklen_t], [], [], [
 dnl These are defined elsewhere than stdio.h.
 PHP_CHECK_SIZEOF([intmax_t], [0])
 PHP_CHECK_SIZEOF([ssize_t], [8])
-PHP_CHECK_SIZEOF([ptrdiff_t], [8])

 dnl Check stdint types (must be after header check).
 PHP_CHECK_STDINT_TYPES
diff --git a/ext/intl/collator/collator_sort.c b/ext/intl/collator/collator_sort.c
index 75466aacb07..ee68a21c989 100644
--- a/ext/intl/collator/collator_sort.c
+++ b/ext/intl/collator/collator_sort.c
@@ -24,10 +24,6 @@
 #include "collator_convert.h"
 #include "intl_convert.h"

-#if !defined(HAVE_PTRDIFF_T) && !defined(_PTRDIFF_T_DEFINED)
-typedef zend_long ptrdiff_t;
-#endif
-
 /**
  * Declare 'index' which will point to sort key in sort key
  * buffer.
diff --git a/main/snprintf.c b/main/snprintf.c
index de69200304a..2bc354fec28 100644
--- a/main/snprintf.c
+++ b/main/snprintf.c
@@ -621,11 +621,7 @@ static size_t format_converter(buffy * odp, const char *fmt, va_list ap) /* {{{
 					break;
 				case 't':
 					fmt++;
-#if SIZEOF_PTRDIFF_T
 					modifier = LM_PTRDIFF_T;
-#else
-					modifier = LM_SIZE_T;
-#endif
 					break;
 				case 'p':
 				{
@@ -694,11 +690,9 @@ static size_t format_converter(buffy * odp, const char *fmt, va_list ap) /* {{{
 							i_num = (int64_t) va_arg(ap, uintmax_t);
 							break;
 #endif
-#if SIZEOF_PTRDIFF_T
 						case LM_PTRDIFF_T:
 							i_num = (int64_t) va_arg(ap, ptrdiff_t);
 							break;
-#endif
 					}
 					/*
 					 * The rest also applies to other integer formats, so fall
@@ -737,11 +731,9 @@ static size_t format_converter(buffy * odp, const char *fmt, va_list ap) /* {{{
 								i_num = (int64_t) va_arg(ap, intmax_t);
 								break;
 #endif
-#if SIZEOF_PTRDIFF_T
 							case LM_PTRDIFF_T:
 								i_num = (int64_t) va_arg(ap, ptrdiff_t);
 								break;
-#endif
 						}
 					}
 					s = ap_php_conv_10(i_num, (*fmt) == 'u', &is_negative,
@@ -783,11 +775,9 @@ static size_t format_converter(buffy * odp, const char *fmt, va_list ap) /* {{{
 							ui_num = (uint64_t) va_arg(ap, uintmax_t);
 							break;
 #endif
-#if SIZEOF_PTRDIFF_T
 						case LM_PTRDIFF_T:
 							ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
 							break;
-#endif
 					}
 					s = ap_php_conv_p2(ui_num, 3, *fmt, &num_buf[NUM_BUF_SIZE], &s_len);
 					FIX_PRECISION(adjust_precision, precision, s, s_len);
@@ -822,11 +812,9 @@ static size_t format_converter(buffy * odp, const char *fmt, va_list ap) /* {{{
 							ui_num = (uint64_t) va_arg(ap, uintmax_t);
 							break;
 #endif
-#if SIZEOF_PTRDIFF_T
 						case LM_PTRDIFF_T:
 							ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
 							break;
-#endif
 					}
 					s = ap_php_conv_p2(ui_num, 4, *fmt, &num_buf[NUM_BUF_SIZE], &s_len);
 					FIX_PRECISION(adjust_precision, precision, s, s_len);
diff --git a/main/snprintf.h b/main/snprintf.h
index 2ff7116c3fb..daaea80685b 100644
--- a/main/snprintf.h
+++ b/main/snprintf.h
@@ -116,9 +116,7 @@ typedef enum {
 #if SIZEOF_INTMAX_T
 	LM_INTMAX_T,
 #endif
-#if SIZEOF_PTRDIFF_T
 	LM_PTRDIFF_T,
-#endif
 #if SIZEOF_LONG_LONG
 	LM_LONG_LONG,
 #endif
diff --git a/main/spprintf.c b/main/spprintf.c
index f180ad31b3d..157e1ea4fea 100644
--- a/main/spprintf.c
+++ b/main/spprintf.c
@@ -321,11 +321,7 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
 					break;
 				case 't':
 					fmt++;
-#if SIZEOF_PTRDIFF_T
 					modifier = LM_PTRDIFF_T;
-#else
-					modifier = LM_SIZE_T;
-#endif
 					break;
 				case 'p':
 				{
@@ -403,11 +399,9 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
 							i_num = (int64_t) va_arg(ap, uintmax_t);
 							break;
 #endif
-#if SIZEOF_PTRDIFF_T
 						case LM_PTRDIFF_T:
 							i_num = (int64_t) va_arg(ap, ptrdiff_t);
 							break;
-#endif
 					}
 					/*
 					 * The rest also applies to other integer formats, so fall
@@ -446,11 +440,9 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
 								i_num = (int64_t) va_arg(ap, intmax_t);
 								break;
 #endif
-#if SIZEOF_PTRDIFF_T
 							case LM_PTRDIFF_T:
 								i_num = (int64_t) va_arg(ap, ptrdiff_t);
 								break;
-#endif
 						}
 					}
 					s = ap_php_conv_10(i_num, (*fmt) == 'u', &is_negative,
@@ -491,11 +483,9 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
 							ui_num = (uint64_t) va_arg(ap, uintmax_t);
 							break;
 #endif
-#if SIZEOF_PTRDIFF_T
 						case LM_PTRDIFF_T:
 							ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
 							break;
-#endif
 					}
 					s = ap_php_conv_p2(ui_num, 3, *fmt,
 								&num_buf[NUM_BUF_SIZE], &s_len);
@@ -531,11 +521,9 @@ static void xbuf_format_converter(void *xbuf, bool is_char, const char *fmt, va_
 							ui_num = (uint64_t) va_arg(ap, uintmax_t);
 							break;
 #endif
-#if SIZEOF_PTRDIFF_T
 						case LM_PTRDIFF_T:
 							ui_num = (uint64_t) va_arg(ap, ptrdiff_t);
 							break;
-#endif
 					}
 					s = ap_php_conv_p2(ui_num, 4, *fmt,
 								&num_buf[NUM_BUF_SIZE], &s_len);
diff --git a/win32/build/config.w32.h.in b/win32/build/config.w32.h.in
index df69e4622f9..73a22f04b2e 100644
--- a/win32/build/config.w32.h.in
+++ b/win32/build/config.w32.h.in
@@ -84,10 +84,8 @@
 #define ssize_t SSIZE_T
 #ifdef _WIN64
 # define SIZEOF_SIZE_T 8
-# define SIZEOF_PTRDIFF_T 8
 #else
 # define SIZEOF_SIZE_T 4
-# define SIZEOF_PTRDIFF_T 4
 #endif
 #define SIZEOF_OFF_T 4
 #define HAVE_FNMATCH