[php-src] master: Add an enum for HASH_KEY_IS_* constants (GH-19376)

From: Date: Wed, 13 Aug 2025 11:59:04 +0000
Subject: [php-src] master: Add an enum for HASH_KEY_IS_* constants (GH-19376)
Groups: php.cvs 
Request: Send a blank email to [email protected] to get a copy of this message
Author: Alexandre Daubois (alexandre-daubois)
Committer: GitHub (web-flow)
Pusher: iluuu1994
Date: 2025-08-13T13:59:01+02:00

Commit: https://github.com/php/php-src/commit/bf64dfcd99f2f14753d8301dd3d4a85cdd53afc7
Raw diff: https://github.com/php/php-src/commit/bf64dfcd99f2f14753d8301dd3d4a85cdd53afc7.diff

Add an enum for HASH_KEY_IS_* constants (GH-19376)

Changed paths:
  M  UPGRADING.INTERNALS
  M  Zend/zend_hash.c
  M  Zend/zend_hash.h
  M  Zend/zend_weakrefs.c
  M  ext/com_dotnet/com_variant.c
  M  ext/com_dotnet/com_wrapper.c


Diff:

diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS
index e8a5a4ca7831b..b7396941e5023 100644
--- a/UPGRADING.INTERNALS
+++ b/UPGRADING.INTERNALS
@@ -79,6 +79,7 @@ PHP 8.5 INTERNALS UPGRADE NOTES
     delayed. Before, errors would be recorded but not delayed.
   . zend_mm_refresh_key_child() must be called on any zend_mm_heap inherited
     from the parent process after a fork().
+  . HASH_KEY_IS_* constants have been moved in the zend_hash_key_type enum.
 
 - standard
   . ext/standard/php_smart_string.h and ext/standard/php_smart_string_public.h
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c
index 8d3f4d1b68816..f48c298f167e7 100644
--- a/Zend/zend_hash.c
+++ b/Zend/zend_hash.c
@@ -2842,7 +2842,7 @@ ZEND_API zend_result ZEND_FASTCALL zend_hash_move_backwards_ex(const HashTable
*
 
 
 /* This function should be made binary safe  */
-ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string
**str_index, zend_ulong *num_index, const HashPosition *pos)
+ZEND_API zend_hash_key_type ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht,
zend_string **str_index, zend_ulong *num_index, const HashPosition *pos)
 {
 	uint32_t idx;
 	Bucket *p;
@@ -2889,7 +2889,7 @@ ZEND_API void ZEND_FASTCALL zend_hash_get_current_key_zval_ex(const HashTable
*h
 	}
 }
 
-ZEND_API int ZEND_FASTCALL zend_hash_get_current_key_type_ex(const HashTable *ht, const
HashPosition *pos)
+ZEND_API zend_hash_key_type ZEND_FASTCALL zend_hash_get_current_key_type_ex(const HashTable *ht,
const HashPosition *pos)
 {
 	uint32_t idx;
 	Bucket *p;
diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h
index b2aaecce0d27c..71206e61550bb 100644
--- a/Zend/zend_hash.h
+++ b/Zend/zend_hash.h
@@ -26,9 +26,11 @@
 #include "zend_string.h"
 #include "zend_sort.h"
 
-#define HASH_KEY_IS_STRING 1
-#define HASH_KEY_IS_LONG 2
-#define HASH_KEY_NON_EXISTENT 3
+typedef enum {
+	HASH_KEY_IS_STRING = 1,
+	HASH_KEY_IS_LONG,
+	HASH_KEY_NON_EXISTENT
+} zend_hash_key_type;
 
 #define HASH_UPDATE 			(1<<0) /* Create new entry, or update the existing one. */
 #define HASH_ADD				(1<<1) /* Create new entry, or fail if it exists. */
@@ -251,9 +253,9 @@ ZEND_API HashPosition ZEND_FASTCALL zend_hash_get_current_pos(const HashTable *h
 
 ZEND_API zend_result   ZEND_FASTCALL zend_hash_move_forward_ex(const HashTable *ht, HashPosition
*pos);
 ZEND_API zend_result   ZEND_FASTCALL zend_hash_move_backwards_ex(const HashTable *ht, HashPosition
*pos);
-ZEND_API int   ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht, zend_string
**str_index, zend_ulong *num_index, const HashPosition *pos);
+ZEND_API zend_hash_key_type  ZEND_FASTCALL zend_hash_get_current_key_ex(const HashTable *ht,
zend_string **str_index, zend_ulong *num_index, const HashPosition *pos);
 ZEND_API void  ZEND_FASTCALL zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key,
const HashPosition *pos);
-ZEND_API int   ZEND_FASTCALL zend_hash_get_current_key_type_ex(const HashTable *ht, const
HashPosition *pos);
+ZEND_API zend_hash_key_type ZEND_FASTCALL zend_hash_get_current_key_type_ex(const HashTable *ht,
const HashPosition *pos);
 ZEND_API zval* ZEND_FASTCALL zend_hash_get_current_data_ex(const HashTable *ht, const HashPosition
*pos);
 ZEND_API void  ZEND_FASTCALL zend_hash_internal_pointer_reset_ex(const HashTable *ht, HashPosition
*pos);
 ZEND_API void  ZEND_FASTCALL zend_hash_internal_pointer_end_ex(const HashTable *ht, HashPosition
*pos);
@@ -270,13 +272,13 @@ static zend_always_inline zend_result zend_hash_move_forward(HashTable *ht) {
 static zend_always_inline zend_result zend_hash_move_backwards(HashTable *ht) {
 	return zend_hash_move_backwards_ex(ht, &ht->nInternalPointer);
 }
-static zend_always_inline int zend_hash_get_current_key(const HashTable *ht, zend_string
**str_index, zend_ulong *num_index) {
+static zend_always_inline zend_hash_key_type zend_hash_get_current_key(const HashTable *ht,
zend_string **str_index, zend_ulong *num_index) {
 	return zend_hash_get_current_key_ex(ht, str_index, num_index, &ht->nInternalPointer);
 }
 static zend_always_inline void zend_hash_get_current_key_zval(const HashTable *ht, zval *key) {
 	zend_hash_get_current_key_zval_ex(ht, key, &ht->nInternalPointer);
 }
-static zend_always_inline int zend_hash_get_current_key_type(const HashTable *ht) {
+static zend_always_inline zend_hash_key_type zend_hash_get_current_key_type(const HashTable *ht) {
 	return zend_hash_get_current_key_type_ex(ht, &ht->nInternalPointer);
 }
 static zend_always_inline zval* zend_hash_get_current_data(const HashTable *ht) {
diff --git a/Zend/zend_weakrefs.c b/Zend/zend_weakrefs.c
index cf363cd12595c..fb564a99e2528 100644
--- a/Zend/zend_weakrefs.c
+++ b/Zend/zend_weakrefs.c
@@ -648,7 +648,7 @@ static void zend_weakmap_iterator_get_current_key(zend_object_iterator *obj_iter
 
 	zend_string *string_key;
 	zend_ulong num_key;
-	int key_type = zend_hash_get_current_key_ex(&wm->ht, &string_key, &num_key, pos);
+	zend_hash_key_type key_type = zend_hash_get_current_key_ex(&wm->ht, &string_key,
&num_key, pos);
 	if (key_type == HASH_KEY_NON_EXISTENT) {
 		ZVAL_NULL(key);
 		return;
diff --git a/ext/com_dotnet/com_variant.c b/ext/com_dotnet/com_variant.c
index 23cbd078fb472..7e63d66b3d3a1 100644
--- a/ext/com_dotnet/com_variant.c
+++ b/ext/com_dotnet/com_variant.c
@@ -32,7 +32,7 @@ static void safe_array_from_zval(VARIANT *v, zval *z, int codepage)
 	SAFEARRAY *sa = NULL;
 	SAFEARRAYBOUND bound;
 	HashPosition pos;
-	int keytype;
+	zend_hash_key_type keytype;
 	zend_string *strindex;
 	zend_ulong intindex = 0;
 	VARIANT *va;
diff --git a/ext/com_dotnet/com_wrapper.c b/ext/com_dotnet/com_wrapper.c
index 6e885fa802e9f..3d05e17affae7 100644
--- a/ext/com_dotnet/com_wrapper.c
+++ b/ext/com_dotnet/com_wrapper.c
@@ -423,7 +423,7 @@ static void generate_dispids(php_dispatchex *disp)
 	HashPosition pos;
 	zend_string *name = NULL;
 	zval *tmp, tmp2;
-	int keytype;
+	zend_hash_key_type keytype;
 	zend_long pid;
 
 	if (disp->dispid_to_name == NULL) {


Thread (1 message)

  • Alexandre Daubois via GitHub
« previous php.cvs (#135278) next »