@@ -1166,26 +1166,30 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 2, 3, 4, 5, 6, 7, 8, 9) lxb_url_t *php_uri_parser
11661166
11671167 if (Z_TYPE_P (query ) == IS_STRING ) {
11681168 php_uri_parser_whatwg_query_set_null (lexbor_url );
1169- lxb_url_parser_clean (& lexbor_parser );
1170- status = lxb_url_parse_basic (& lexbor_parser , lexbor_url , lexbor_base_url ,
1171- (lxb_char_t * ) Z_STRVAL_P (query ), Z_STRLEN_P (query ),
1172- LXB_URL_STATE_QUERY_STATE , LXB_ENCODING_AUTO
1173- );
1174- php_uri_parser_whatwg_build_errors_and_throw (status , "query" , & errors );
1175- if (status != LXB_STATUS_OK ) {
1169+ zend_result result ;
1170+ if (Z_STRLEN_P (query ) == 0 ) {
1171+ lexbor_str_init (& lexbor_url -> query , lexbor_url -> mraw , 1 );
1172+ result = SUCCESS ;
1173+ } else {
1174+ result = php_uri_parser_whatwg_query_write (lexbor_url , query , NULL );
1175+ }
1176+ php_uri_parser_whatwg_build_errors (& errors );
1177+ if (result == FAILURE ) {
11761178 goto failure ;
11771179 }
11781180 }
11791181
11801182 if (Z_TYPE_P (fragment ) == IS_STRING ) {
11811183 php_uri_parser_whatwg_fragment_set_null (lexbor_url );
1182- lxb_url_parser_clean (& lexbor_parser );
1183- status = lxb_url_parse_basic (& lexbor_parser , lexbor_url , lexbor_base_url ,
1184- (lxb_char_t * ) Z_STRVAL_P (fragment ), Z_STRLEN_P (fragment ),
1185- LXB_URL_STATE_FRAGMENT_STATE , LXB_ENCODING_AUTO
1186- );
1187- php_uri_parser_whatwg_build_errors_and_throw (status , "fragment" , & errors );
1188- if (status != LXB_STATUS_OK ) {
1184+ zend_result result ;
1185+ if (Z_STRLEN_P (fragment ) == 0 ) {
1186+ lexbor_str_init (& lexbor_url -> fragment , lexbor_url -> mraw , 1 );
1187+ result = SUCCESS ;
1188+ } else {
1189+ result = php_uri_parser_whatwg_fragment_write (lexbor_url , fragment , NULL );
1190+ }
1191+ php_uri_parser_whatwg_build_errors (& errors );
1192+ if (result == FAILURE ) {
11891193 goto failure ;
11901194 }
11911195 }
0 commit comments