From e210de85f045981593975f2e2e756ddc2f925f55 Mon Sep 17 00:00:00 2001 From: Dmitriy Derepko Date: Wed, 23 Jul 2025 13:52:55 +0300 Subject: [PATCH 1/5] handle html entities empty string --- ext/standard/html.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ext/standard/html.c b/ext/standard/html.c index 0c6231d590d88..8edb5f97ff236 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -1320,6 +1320,10 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all) Z_PARAM_BOOL(double_encode); ZEND_PARSE_PARAMETERS_END(); + if (str->len == 0) { + RETVAL_STR(str); + return; + } replaced = php_escape_html_entities_ex( (unsigned char*)ZSTR_VAL(str), ZSTR_LEN(str), all, (int) flags, hint_charset ? ZSTR_VAL(hint_charset) : NULL, double_encode, /* quiet */ 0); From a784b170718a5b16763bad824a6a65b86dab9681 Mon Sep 17 00:00:00 2001 From: Dmitriy Derepko Date: Wed, 23 Jul 2025 15:06:38 +0300 Subject: [PATCH 2/5] apply review suggestions --- ext/standard/html.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/standard/html.c b/ext/standard/html.c index 8edb5f97ff236..b4e22761d602d 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -1320,8 +1320,8 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all) Z_PARAM_BOOL(double_encode); ZEND_PARSE_PARAMETERS_END(); - if (str->len == 0) { - RETVAL_STR(str); + if (EXPECTED(ZSTR_LEN(str) == 0)) { + RETVAL_STR_COPY(str); return; } replaced = php_escape_html_entities_ex( From 987f3279211d0ef7ee373d912344d52dba2299d5 Mon Sep 17 00:00:00 2001 From: Dmitriy Derepko Date: Wed, 23 Jul 2025 15:09:03 +0300 Subject: [PATCH 3/5] use empty string pointer --- ext/standard/html.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/standard/html.c b/ext/standard/html.c index b4e22761d602d..1f0ebd97b4911 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -1321,7 +1321,7 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all) ZEND_PARSE_PARAMETERS_END(); if (EXPECTED(ZSTR_LEN(str) == 0)) { - RETVAL_STR_COPY(str); + RETURN_EMPTY_STRING(); return; } replaced = php_escape_html_entities_ex( From 8cca28db93ab9b9dc5647591af78bee502fb5689 Mon Sep 17 00:00:00 2001 From: Dmitriy Derepko Date: Fri, 25 Jul 2025 11:15:12 +0300 Subject: [PATCH 4/5] remove expectations --- ext/standard/html.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/standard/html.c b/ext/standard/html.c index 1f0ebd97b4911..d1e8bf94046ae 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -1320,7 +1320,7 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all) Z_PARAM_BOOL(double_encode); ZEND_PARSE_PARAMETERS_END(); - if (EXPECTED(ZSTR_LEN(str) == 0)) { + if (ZSTR_LEN(str) == 0) { RETURN_EMPTY_STRING(); return; } From 16150390ed226d192cabf27ad0253579c347b939 Mon Sep 17 00:00:00 2001 From: Dmitriy Derepko Date: Fri, 25 Jul 2025 12:44:55 +0300 Subject: [PATCH 5/5] remove unnecessary return stmt --- ext/standard/html.c | 1 - 1 file changed, 1 deletion(-) diff --git a/ext/standard/html.c b/ext/standard/html.c index d1e8bf94046ae..878c3afe47e71 100644 --- a/ext/standard/html.c +++ b/ext/standard/html.c @@ -1322,7 +1322,6 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all) if (ZSTR_LEN(str) == 0) { RETURN_EMPTY_STRING(); - return; } replaced = php_escape_html_entities_ex( (unsigned char*)ZSTR_VAL(str), ZSTR_LEN(str), all, (int) flags,