1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

uri: Do not pass uri_internal_t to property handlers (#19805)

* uri: Do not pass `uri_internal_t` to property handlers

Within an individual property handler, the `parser` is already implicitly
known, which just leaves the `->uri` field which must contain the entire state
necessary for the handlers to work with.

Pass the `->uri` directly. It avoids one pointer indirection, since the
handlers do not need to follow the pointer to the `uri_internal_t` just to
follow the pointer to the URI state.  Instead the URI pointer can directly be
passed using a register with the dereferences (if necessary) happening in the
caller, providing more insight for the compiler to work with.

It also makes it more convenient to use the handlers directly for code that
already knows that it needs a specific URI parser, since no `uri_internal_t`
needs to be constructed to store the already-known information about which
parser to use.

* uri: Use local variable for the URI in `uri_get_debug_properties()`

This makes the code a little less verbose.
This commit is contained in:
Tim Düsterhus
2025-09-11 21:58:03 +02:00
committed by GitHub
parent 7404829085
commit 04deb4df62
7 changed files with 102 additions and 105 deletions

View File

@@ -58,42 +58,43 @@ static HashTable *uri_get_debug_properties(zend_object *object)
HashTable *std_properties = zend_std_get_properties(object);
HashTable *result = zend_array_dup(std_properties);
if (UNEXPECTED(internal_uri->uri == NULL)) {
const php_uri_parser * const parser = internal_uri->parser;
void * const uri = internal_uri->uri;
if (UNEXPECTED(uri == NULL)) {
return result;
}
const php_uri_parser *parser = internal_uri->parser;
zval tmp;
if (parser->property_handler.scheme.read(internal_uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
if (parser->property_handler.scheme.read(uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
zend_hash_update(result, ZSTR_KNOWN(ZEND_STR_SCHEME), &tmp);
}
if (parser->property_handler.username.read(internal_uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
if (parser->property_handler.username.read(uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
zend_hash_update(result, ZSTR_KNOWN(ZEND_STR_USERNAME), &tmp);
}
if (parser->property_handler.password.read(internal_uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
if (parser->property_handler.password.read(uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
zend_hash_update(result, ZSTR_KNOWN(ZEND_STR_PASSWORD), &tmp);
}
if (parser->property_handler.host.read(internal_uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
if (parser->property_handler.host.read(uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
zend_hash_update(result, ZSTR_KNOWN(ZEND_STR_HOST), &tmp);
}
if (parser->property_handler.port.read(internal_uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
if (parser->property_handler.port.read(uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
zend_hash_update(result, ZSTR_KNOWN(ZEND_STR_PORT), &tmp);
}
if (parser->property_handler.path.read(internal_uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
if (parser->property_handler.path.read(uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
zend_hash_update(result, ZSTR_KNOWN(ZEND_STR_PATH), &tmp);
}
if (parser->property_handler.query.read(internal_uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
if (parser->property_handler.query.read(uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
zend_hash_update(result, ZSTR_KNOWN(ZEND_STR_QUERY), &tmp);
}
if (parser->property_handler.fragment.read(internal_uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
if (parser->property_handler.fragment.read(uri, PHP_URI_COMPONENT_READ_MODE_RAW, &tmp) == SUCCESS) {
zend_hash_update(result, ZSTR_KNOWN(ZEND_STR_FRAGMENT), &tmp);
}
@@ -130,7 +131,7 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_get_property(const uri_interna
return FAILURE;
}
return property_handler->read(internal_uri, read_mode, zv);
return property_handler->read(internal_uri->uri, read_mode, zv);
}
ZEND_ATTRIBUTE_NONNULL PHPAPI zend_result php_uri_get_scheme(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *zv)
@@ -536,7 +537,7 @@ static void rfc3986_userinfo_read(INTERNAL_FUNCTION_PARAMETERS, php_uri_componen
uri_internal_t *internal_uri = Z_URI_INTERNAL_P(ZEND_THIS);
URI_ASSERT_INITIALIZATION(internal_uri);
if (UNEXPECTED(php_uri_parser_rfc3986_userinfo_read(internal_uri, read_mode, return_value) == FAILURE)) {
if (UNEXPECTED(php_uri_parser_rfc3986_userinfo_read(internal_uri->uri, read_mode, return_value) == FAILURE)) {
zend_throw_error(NULL, "The userinfo component cannot be retrieved");
RETURN_THROWS();
}
@@ -583,7 +584,7 @@ PHP_METHOD(Uri_Rfc3986_Uri, withUserInfo)
uri_internal_t *new_internal_uri = uri_internal_from_obj(new_object);
URI_ASSERT_INITIALIZATION(new_internal_uri);
if (UNEXPECTED(php_uri_parser_rfc3986_userinfo_write(new_internal_uri, &zv, NULL) == FAILURE)) {
if (UNEXPECTED(php_uri_parser_rfc3986_userinfo_write(new_internal_uri->uri, &zv, NULL) == FAILURE)) {
RETURN_THROWS();
}
}

View File

@@ -75,7 +75,7 @@ void uri_read_component(INTERNAL_FUNCTION_PARAMETERS, php_uri_property_name prop
const php_uri_property_handler *property_handler = uri_property_handler_from_internal_uri(internal_uri, property_name);
ZEND_ASSERT(property_handler != NULL);
if (UNEXPECTED(property_handler->read(internal_uri, component_read_mode, return_value) == FAILURE)) {
if (UNEXPECTED(property_handler->read(internal_uri->uri, component_read_mode, return_value) == FAILURE)) {
zend_throw_error(NULL, "The %s component cannot be retrieved", ZSTR_VAL(get_known_string_by_property_name(property_name)));
RETURN_THROWS();
}
@@ -109,7 +109,7 @@ static void uri_write_component_ex(INTERNAL_FUNCTION_PARAMETERS, php_uri_propert
zval errors;
ZVAL_UNDEF(&errors);
if (UNEXPECTED(property_handler->write(new_internal_uri, property_zv, &errors) == FAILURE)) {
if (UNEXPECTED(property_handler->write(new_internal_uri->uri, property_zv, &errors) == FAILURE)) {
zval_ptr_dtor(&errors);
RETURN_THROWS();
}

View File

@@ -41,11 +41,9 @@ typedef enum php_uri_component_read_mode {
PHP_URI_COMPONENT_READ_MODE_NORMALIZED_UNICODE,
} php_uri_component_read_mode;
struct uri_internal_t;
typedef zend_result (*php_uri_property_handler_read)(void *uri, php_uri_component_read_mode read_mode, zval *retval);
typedef zend_result (*php_uri_property_handler_read)(const struct uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval);
typedef zend_result (*php_uri_property_handler_write)(struct uri_internal_t *internal_uri, zval *value, zval *errors);
typedef zend_result (*php_uri_property_handler_write)(void *uri, zval *value, zval *errors);
typedef enum php_uri_property_name {
PHP_URI_PROPERTY_NAME_SCHEME,

View File

@@ -38,9 +38,9 @@ static zend_string *decode_component(zend_string *in, php_uri_component_read_mod
}
}
static zend_result uri_parser_php_parse_url_scheme_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result uri_parser_php_parse_url_scheme_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const php_url *parse_url_uri = internal_uri->uri;
const php_url *parse_url_uri = uri;
if (parse_url_uri->scheme) {
ZVAL_STR(retval, decode_component(parse_url_uri->scheme, read_mode));
@@ -51,9 +51,9 @@ static zend_result uri_parser_php_parse_url_scheme_read(const uri_internal_t *in
return SUCCESS;
}
static zend_result uri_parser_php_parse_url_username_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result uri_parser_php_parse_url_username_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const php_url *parse_url_uri = internal_uri->uri;
const php_url *parse_url_uri = uri;
if (parse_url_uri->user) {
ZVAL_STR(retval, decode_component(parse_url_uri->user, read_mode));
@@ -64,9 +64,9 @@ static zend_result uri_parser_php_parse_url_username_read(const uri_internal_t *
return SUCCESS;
}
static zend_result uri_parser_php_parse_url_password_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result uri_parser_php_parse_url_password_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const php_url *parse_url_uri = internal_uri->uri;
const php_url *parse_url_uri = uri;
if (parse_url_uri->pass) {
ZVAL_STR(retval, decode_component(parse_url_uri->pass, read_mode));
@@ -77,9 +77,9 @@ static zend_result uri_parser_php_parse_url_password_read(const uri_internal_t *
return SUCCESS;
}
static zend_result uri_parser_php_parse_url_host_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result uri_parser_php_parse_url_host_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const php_url *parse_url_uri = internal_uri->uri;
const php_url *parse_url_uri = uri;
if (parse_url_uri->host) {
ZVAL_STR(retval, decode_component(parse_url_uri->host, read_mode));
@@ -90,9 +90,9 @@ static zend_result uri_parser_php_parse_url_host_read(const uri_internal_t *inte
return SUCCESS;
}
static zend_result uri_parser_php_parse_url_port_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result uri_parser_php_parse_url_port_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const php_url *parse_url_uri = internal_uri->uri;
const php_url *parse_url_uri = uri;
if (parse_url_uri->port) {
ZVAL_LONG(retval, parse_url_uri->port);
@@ -103,9 +103,9 @@ static zend_result uri_parser_php_parse_url_port_read(const uri_internal_t *inte
return SUCCESS;
}
static zend_result uri_parser_php_parse_url_path_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result uri_parser_php_parse_url_path_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const php_url *parse_url_uri = internal_uri->uri;
const php_url *parse_url_uri = uri;
if (parse_url_uri->path) {
ZVAL_STR(retval, decode_component(parse_url_uri->path, read_mode));
@@ -116,9 +116,9 @@ static zend_result uri_parser_php_parse_url_path_read(const uri_internal_t *inte
return SUCCESS;
}
static zend_result uri_parser_php_parse_url_query_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result uri_parser_php_parse_url_query_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const php_url *parse_url_uri = internal_uri->uri;
const php_url *parse_url_uri = uri;
if (parse_url_uri->query) {
ZVAL_STR(retval, decode_component(parse_url_uri->query, read_mode));
@@ -129,9 +129,9 @@ static zend_result uri_parser_php_parse_url_query_read(const uri_internal_t *int
return SUCCESS;
}
static zend_result uri_parser_php_parse_url_fragment_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result uri_parser_php_parse_url_fragment_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const php_url *parse_url_uri = internal_uri->uri;
const php_url *parse_url_uri = uri;
if (parse_url_uri->fragment) {
ZVAL_STR(retval, decode_component(parse_url_uri->fragment, read_mode));

View File

@@ -99,16 +99,14 @@ ZEND_ATTRIBUTE_NONNULL static UriUriA *get_uri_for_reading(php_uri_parser_rfc398
}
}
ZEND_ATTRIBUTE_NONNULL static UriUriA *get_uri_for_writing(uri_internal_t *internal_uri)
ZEND_ATTRIBUTE_NONNULL static UriUriA *get_uri_for_writing(php_uri_parser_rfc3986_uris *uriparser_uris)
{
php_uri_parser_rfc3986_uris *uriparser_uris = internal_uri->uri;
return &uriparser_uris->uri;
}
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_scheme_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_scheme_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const UriUriA *uriparser_uri = get_uri_for_reading(internal_uri->uri, read_mode);
const UriUriA *uriparser_uri = get_uri_for_reading(uri, read_mode);
if (has_text_range(&uriparser_uri->scheme)) {
ZVAL_STRINGL(retval, uriparser_uri->scheme.first, get_text_range_length(&uriparser_uri->scheme));
@@ -119,9 +117,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_scheme_read(con
return SUCCESS;
}
static zend_result php_uri_parser_rfc3986_scheme_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_rfc3986_scheme_write(void *uri, zval *value, zval *errors)
{
UriUriA *uriparser_uri = get_uri_for_writing(internal_uri);
UriUriA *uriparser_uri = get_uri_for_writing(uri);
int result;
if (Z_TYPE_P(value) == IS_NULL) {
@@ -143,9 +141,9 @@ static zend_result php_uri_parser_rfc3986_scheme_write(struct uri_internal_t *in
}
}
ZEND_ATTRIBUTE_NONNULL zend_result php_uri_parser_rfc3986_userinfo_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
ZEND_ATTRIBUTE_NONNULL zend_result php_uri_parser_rfc3986_userinfo_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const UriUriA *uriparser_uri = get_uri_for_reading(internal_uri->uri, read_mode);
const UriUriA *uriparser_uri = get_uri_for_reading(uri, read_mode);
if (has_text_range(&uriparser_uri->userInfo)) {
ZVAL_STRINGL(retval, uriparser_uri->userInfo.first, get_text_range_length(&uriparser_uri->userInfo));
@@ -156,9 +154,9 @@ ZEND_ATTRIBUTE_NONNULL zend_result php_uri_parser_rfc3986_userinfo_read(const ur
return SUCCESS;
}
zend_result php_uri_parser_rfc3986_userinfo_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
zend_result php_uri_parser_rfc3986_userinfo_write(void *uri, zval *value, zval *errors)
{
UriUriA *uriparser_uri = get_uri_for_writing(internal_uri);
UriUriA *uriparser_uri = get_uri_for_writing(uri);
int result;
if (Z_TYPE_P(value) == IS_NULL) {
@@ -183,9 +181,9 @@ zend_result php_uri_parser_rfc3986_userinfo_write(struct uri_internal_t *interna
}
}
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_username_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_username_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const UriUriA *uriparser_uri = get_uri_for_reading(internal_uri->uri, read_mode);
const UriUriA *uriparser_uri = get_uri_for_reading(uri, read_mode);
if (has_text_range(&uriparser_uri->userInfo)) {
size_t length = get_text_range_length(&uriparser_uri->userInfo);
@@ -205,9 +203,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_username_read(c
return SUCCESS;
}
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_password_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_password_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const UriUriA *uriparser_uri = get_uri_for_reading(internal_uri->uri, read_mode);
const UriUriA *uriparser_uri = get_uri_for_reading(uri, read_mode);
if (has_text_range(&uriparser_uri->userInfo)) {
const char *c = memchr(uriparser_uri->userInfo.first, ':', get_text_range_length(&uriparser_uri->userInfo));
@@ -224,9 +222,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_password_read(c
return SUCCESS;
}
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_host_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_host_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const UriUriA *uriparser_uri = get_uri_for_reading(internal_uri->uri, read_mode);
const UriUriA *uriparser_uri = get_uri_for_reading(uri, read_mode);
if (has_text_range(&uriparser_uri->hostText)) {
if (uriparser_uri->hostData.ip6 != NULL || uriparser_uri->hostData.ipFuture.first != NULL) {
@@ -248,9 +246,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_host_read(const
return SUCCESS;
}
static zend_result php_uri_parser_rfc3986_host_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_rfc3986_host_write(void *uri, zval *value, zval *errors)
{
UriUriA *uriparser_uri = get_uri_for_writing(internal_uri);
UriUriA *uriparser_uri = get_uri_for_writing(uri);
int result;
if (Z_TYPE_P(value) == IS_NULL) {
@@ -296,9 +294,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_long port_str_to_zend_long_checked(const char
return (zend_long)result;
}
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_port_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_port_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const UriUriA *uriparser_uri = get_uri_for_reading(internal_uri->uri, read_mode);
const UriUriA *uriparser_uri = get_uri_for_reading(uri, read_mode);
if (has_text_range(&uriparser_uri->portText) && get_text_range_length(&uriparser_uri->portText) > 0) {
ZVAL_LONG(retval, port_str_to_zend_long_checked(uriparser_uri->portText.first, get_text_range_length(&uriparser_uri->portText)));
@@ -309,9 +307,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_port_read(const
return SUCCESS;
}
static zend_result php_uri_parser_rfc3986_port_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_rfc3986_port_write(void *uri, zval *value, zval *errors)
{
UriUriA *uriparser_uri = get_uri_for_writing(internal_uri);
UriUriA *uriparser_uri = get_uri_for_writing(uri);
int result;
if (Z_TYPE_P(value) == IS_NULL) {
@@ -338,9 +336,9 @@ static zend_result php_uri_parser_rfc3986_port_write(struct uri_internal_t *inte
}
}
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_path_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_path_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const UriUriA *uriparser_uri = get_uri_for_reading(internal_uri->uri, read_mode);
const UriUriA *uriparser_uri = get_uri_for_reading(uri, read_mode);
if (uriparser_uri->pathHead != NULL) {
smart_str str = {0};
@@ -366,9 +364,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_path_read(const
return SUCCESS;
}
static zend_result php_uri_parser_rfc3986_path_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_rfc3986_path_write(void *uri, zval *value, zval *errors)
{
UriUriA *uriparser_uri = get_uri_for_writing(internal_uri);
UriUriA *uriparser_uri = get_uri_for_writing(uri);
int result;
if (Z_STRLEN_P(value) == 0) {
@@ -390,9 +388,9 @@ static zend_result php_uri_parser_rfc3986_path_write(struct uri_internal_t *inte
}
}
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_query_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_query_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const UriUriA *uriparser_uri = get_uri_for_reading(internal_uri->uri, read_mode);
const UriUriA *uriparser_uri = get_uri_for_reading(uri, read_mode);
if (has_text_range(&uriparser_uri->query)) {
ZVAL_STRINGL(retval, uriparser_uri->query.first, get_text_range_length(&uriparser_uri->query));
@@ -403,9 +401,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_query_read(cons
return SUCCESS;
}
static zend_result php_uri_parser_rfc3986_query_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_rfc3986_query_write(void *uri, zval *value, zval *errors)
{
UriUriA *uriparser_uri = get_uri_for_writing(internal_uri);
UriUriA *uriparser_uri = get_uri_for_writing(uri);
int result;
if (Z_TYPE_P(value) == IS_NULL) {
@@ -427,9 +425,9 @@ static zend_result php_uri_parser_rfc3986_query_write(struct uri_internal_t *int
}
}
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_fragment_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_fragment_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const UriUriA *uriparser_uri = get_uri_for_reading(internal_uri->uri, read_mode);
const UriUriA *uriparser_uri = get_uri_for_reading(uri, read_mode);
if (has_text_range(&uriparser_uri->fragment)) {
ZVAL_STRINGL(retval, uriparser_uri->fragment.first, get_text_range_length(&uriparser_uri->fragment));
@@ -440,9 +438,9 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_fragment_read(c
return SUCCESS;
}
static zend_result php_uri_parser_rfc3986_fragment_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_rfc3986_fragment_write(void *uri, zval *value, zval *errors)
{
UriUriA *uriparser_uri = get_uri_for_writing(internal_uri);
UriUriA *uriparser_uri = get_uri_for_writing(uri);
int result;
if (Z_TYPE_P(value) == IS_NULL) {

View File

@@ -28,8 +28,8 @@ typedef struct php_uri_parser_rfc3986_uris {
bool normalized_uri_initialized;
} php_uri_parser_rfc3986_uris;
zend_result php_uri_parser_rfc3986_userinfo_read(const uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval);
zend_result php_uri_parser_rfc3986_userinfo_write(struct uri_internal_t *internal_uri, zval *value, zval *errors);
zend_result php_uri_parser_rfc3986_userinfo_read(void *uri, php_uri_component_read_mode read_mode, zval *retval);
zend_result php_uri_parser_rfc3986_userinfo_write(void *uri, zval *value, zval *errors);
php_uri_parser_rfc3986_uris *php_uri_parser_rfc3986_parse_ex(const char *uri_str, size_t uri_str_len, const php_uri_parser_rfc3986_uris *uriparser_base_url, bool silent);

View File

@@ -247,9 +247,9 @@ static lxb_status_t serialize_to_smart_str_callback(const lxb_char_t *data, size
return LXB_STATUS_OK;
}
static zend_result php_uri_parser_whatwg_scheme_read(const struct uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result php_uri_parser_whatwg_scheme_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const lxb_url_t *lexbor_uri = internal_uri->uri;
const lxb_url_t *lexbor_uri = uri;
ZEND_ASSERT(lexbor_uri->scheme.type != LXB_URL_SCHEMEL_TYPE__UNDEF);
@@ -258,9 +258,9 @@ static zend_result php_uri_parser_whatwg_scheme_read(const struct uri_internal_t
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_scheme_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_whatwg_scheme_write(void *uri, zval *value, zval *errors)
{
lxb_url_t *lexbor_uri = internal_uri->uri;
lxb_url_t *lexbor_uri = uri;
lexbor_str_t str = {0};
zval_string_or_null_to_lexbor_str(value, &str);
@@ -274,9 +274,9 @@ static zend_result php_uri_parser_whatwg_scheme_write(struct uri_internal_t *int
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_username_read(const struct uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result php_uri_parser_whatwg_username_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const lxb_url_t *lexbor_uri = internal_uri->uri;
const lxb_url_t *lexbor_uri = uri;
if (lexbor_uri->username.length) {
ZVAL_STRINGL(retval, (const char *) lexbor_uri->username.data, lexbor_uri->username.length);
@@ -287,9 +287,9 @@ static zend_result php_uri_parser_whatwg_username_read(const struct uri_internal
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_username_write(uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_whatwg_username_write(void *uri, zval *value, zval *errors)
{
lxb_url_t *lexbor_uri = internal_uri->uri;
lxb_url_t *lexbor_uri = uri;
lexbor_str_t str = {0};
zval_string_or_null_to_lexbor_str(value, &str);
@@ -303,9 +303,9 @@ static zend_result php_uri_parser_whatwg_username_write(uri_internal_t *internal
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_password_read(const struct uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result php_uri_parser_whatwg_password_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const lxb_url_t *lexbor_uri = internal_uri->uri;
const lxb_url_t *lexbor_uri = uri;
if (lexbor_uri->password.length > 0) {
ZVAL_STRINGL(retval, (const char *) lexbor_uri->password.data, lexbor_uri->password.length);
@@ -316,9 +316,9 @@ static zend_result php_uri_parser_whatwg_password_read(const struct uri_internal
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_password_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_whatwg_password_write(void *uri, zval *value, zval *errors)
{
lxb_url_t *lexbor_uri = internal_uri->uri;
lxb_url_t *lexbor_uri = uri;
lexbor_str_t str = {0};
zval_string_or_null_to_lexbor_str(value, &str);
@@ -332,9 +332,9 @@ static zend_result php_uri_parser_whatwg_password_write(struct uri_internal_t *i
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_host_read(const struct uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result php_uri_parser_whatwg_host_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const lxb_url_t *lexbor_uri = internal_uri->uri;
const lxb_url_t *lexbor_uri = uri;
if (lexbor_uri->host.type == LXB_URL_HOST_TYPE_IPV4) {
smart_str host_str = {0};
@@ -376,9 +376,9 @@ static zend_result php_uri_parser_whatwg_host_read(const struct uri_internal_t *
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_host_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_whatwg_host_write(void *uri, zval *value, zval *errors)
{
lxb_url_t *lexbor_uri = internal_uri->uri;
lxb_url_t *lexbor_uri = uri;
lexbor_str_t str = {0};
zval_string_or_null_to_lexbor_str(value, &str);
@@ -392,9 +392,9 @@ static zend_result php_uri_parser_whatwg_host_write(struct uri_internal_t *inter
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_port_read(const struct uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result php_uri_parser_whatwg_port_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const lxb_url_t *lexbor_uri = internal_uri->uri;
const lxb_url_t *lexbor_uri = uri;
if (lexbor_uri->has_port) {
ZVAL_LONG(retval, lexbor_uri->port);
@@ -405,9 +405,9 @@ static zend_result php_uri_parser_whatwg_port_read(const struct uri_internal_t *
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_port_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_whatwg_port_write(void *uri, zval *value, zval *errors)
{
lxb_url_t *lexbor_uri = internal_uri->uri;
lxb_url_t *lexbor_uri = uri;
lexbor_str_t str = {0};
zval_long_or_null_to_lexbor_str(value, &str);
@@ -421,9 +421,9 @@ static zend_result php_uri_parser_whatwg_port_write(struct uri_internal_t *inter
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_path_read(const struct uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result php_uri_parser_whatwg_path_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const lxb_url_t *lexbor_uri = internal_uri->uri;
const lxb_url_t *lexbor_uri = uri;
if (lexbor_uri->path.str.length) {
ZVAL_STRINGL(retval, (const char *) lexbor_uri->path.str.data, lexbor_uri->path.str.length);
@@ -434,9 +434,9 @@ static zend_result php_uri_parser_whatwg_path_read(const struct uri_internal_t *
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_path_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_whatwg_path_write(void *uri, zval *value, zval *errors)
{
lxb_url_t *lexbor_uri = internal_uri->uri;
lxb_url_t *lexbor_uri = uri;
lexbor_str_t str = {0};
zval_string_or_null_to_lexbor_str(value, &str);
@@ -450,9 +450,9 @@ static zend_result php_uri_parser_whatwg_path_write(struct uri_internal_t *inter
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_query_read(const struct uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result php_uri_parser_whatwg_query_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const lxb_url_t *lexbor_uri = internal_uri->uri;
const lxb_url_t *lexbor_uri = uri;
if (lexbor_uri->query.length) {
ZVAL_STRINGL(retval, (const char *) lexbor_uri->query.data, lexbor_uri->query.length);
@@ -463,9 +463,9 @@ static zend_result php_uri_parser_whatwg_query_read(const struct uri_internal_t
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_query_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_whatwg_query_write(void *uri, zval *value, zval *errors)
{
lxb_url_t *lexbor_uri = internal_uri->uri;
lxb_url_t *lexbor_uri = uri;
lexbor_str_t str = {0};
zval_string_or_null_to_lexbor_str(value, &str);
@@ -479,9 +479,9 @@ static zend_result php_uri_parser_whatwg_query_write(struct uri_internal_t *inte
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_fragment_read(const struct uri_internal_t *internal_uri, php_uri_component_read_mode read_mode, zval *retval)
static zend_result php_uri_parser_whatwg_fragment_read(void *uri, php_uri_component_read_mode read_mode, zval *retval)
{
const lxb_url_t *lexbor_uri = internal_uri->uri;
const lxb_url_t *lexbor_uri = uri;
if (lexbor_uri->fragment.length) {
ZVAL_STRINGL(retval, (const char *) lexbor_uri->fragment.data, lexbor_uri->fragment.length);
@@ -492,9 +492,9 @@ static zend_result php_uri_parser_whatwg_fragment_read(const struct uri_internal
return SUCCESS;
}
static zend_result php_uri_parser_whatwg_fragment_write(struct uri_internal_t *internal_uri, zval *value, zval *errors)
static zend_result php_uri_parser_whatwg_fragment_write(void *uri, zval *value, zval *errors)
{
lxb_url_t *lexbor_uri = internal_uri->uri;
lxb_url_t *lexbor_uri = uri;
lexbor_str_t str = {0};
zval_string_or_null_to_lexbor_str(value, &str);