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

Update Lexbor

Cherry-pick b2dbadcf16

Adding support for IDNA URL serialization.
This commit is contained in:
Máté Kocsis
2025-06-10 10:07:11 +02:00
parent 1c09c0c832
commit 7d24cce78a
2 changed files with 27 additions and 4 deletions

View File

@@ -4442,9 +4442,9 @@ lxb_url_api_hash_set(lxb_url_t *url, lxb_url_parser_t *parser,
return status;
}
lxb_status_t
lxb_url_serialize(const lxb_url_t *url, lexbor_serialize_cb_f cb, void *ctx,
bool exclude_fragment)
static lxb_status_t
lxb_url_serialize_body(lxb_unicode_idna_t *idna, const lxb_url_t *url, lexbor_serialize_cb_f cb,
void *ctx, bool exclude_fragment)
{
lxb_status_t status;
const lexbor_str_t *str;
@@ -4484,7 +4484,12 @@ lxb_url_serialize(const lxb_url_t *url, lexbor_serialize_cb_f cb, void *ctx,
lexbor_serialize_write(cb, at_str.data, at_str.length, ctx, status);
}
status = lxb_url_serialize_host(&url->host, cb, ctx);
if (idna != NULL) {
status = lxb_url_serialize_host_unicode(idna, &url->host, cb, ctx);
} else {
status = lxb_url_serialize_host(&url->host, cb, ctx);
}
if (status != LXB_STATUS_OK) {
return status;
}
@@ -4529,6 +4534,20 @@ lxb_url_serialize(const lxb_url_t *url, lexbor_serialize_cb_f cb, void *ctx,
return LXB_STATUS_OK;
}
lxb_status_t
lxb_url_serialize(const lxb_url_t *url, lexbor_serialize_cb_f cb, void *ctx,
bool exclude_fragment)
{
return lxb_url_serialize_body(NULL, url, cb, ctx, exclude_fragment);
}
lxb_status_t
lxb_url_serialize_idna(lxb_unicode_idna_t *idna, const lxb_url_t *url, lexbor_serialize_cb_f cb,
void *ctx, bool exclude_fragment)
{
return lxb_url_serialize_body(idna, url, cb, ctx, exclude_fragment);
}
lxb_status_t
lxb_url_serialize_scheme(const lxb_url_t *url,
lexbor_serialize_cb_f cb, void *ctx)

View File

@@ -403,6 +403,10 @@ LXB_API lxb_status_t
lxb_url_serialize(const lxb_url_t *url, lexbor_serialize_cb_f cb, void *ctx,
bool exclude_fragment);
LXB_API lxb_status_t
lxb_url_serialize_idna(lxb_unicode_idna_t *idna, const lxb_url_t *url, lexbor_serialize_cb_f cb,
void *ctx, bool exclude_fragment);
LXB_API lxb_status_t
lxb_url_serialize_scheme(const lxb_url_t *url,
lexbor_serialize_cb_f cb, void *ctx);