@@ -110,6 +110,7 @@ PHPAPI const php_uri_parser *php_uri_get_parser(zend_string *uri_parser_name)
110110 return zend_hash_find_ptr (& uri_parsers , uri_parser_name );
111111}
112112
113+ <<<<<<< HEAD
113114ZEND_ATTRIBUTE_NONNULL PHPAPI uri_internal_t * php_uri_parse (const php_uri_parser * uri_parser , const char * uri_str , size_t uri_str_len , bool silent )
114115{
115116 void * parsed = uri_parser -> parse (uri_str , uri_str_len , NULL , NULL , silent );
@@ -123,6 +124,42 @@ ZEND_ATTRIBUTE_NONNULL PHPAPI uri_internal_t *php_uri_parse(const php_uri_parser
123124 internal_uri -> uri = parsed ;
124125
125126 return internal_uri ;
127+ || || || | parent of c5c6f7b15ec (uri : Remove `php_uri_parse ()` and `php_uri_free ()`)
128+ ZEND_ATTRIBUTE_NONNULL PHPAPI uri_internal_t * php_uri_parse (const php_uri_parser * uri_parser , const char * uri_str , size_t uri_str_len , bool silent )
129+ {
130+ void * parsed = uri_parser -> parse (uri_str , uri_str_len , NULL , NULL , silent );
131+
132+ if (parsed == NULL ) {
133+ return NULL ;
134+ }
135+
136+ uri_internal_t * internal_uri = emalloc (sizeof (* internal_uri ));
137+ internal_uri -> parser = uri_parser ;
138+ internal_uri -> uri = parsed ;
139+
140+ return internal_uri ;
141+ }
142+
143+ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_get_property (const uri_internal_t * internal_uri , php_uri_property_name property_name , php_uri_component_read_mode read_mode , zval * zv )
144+ {
145+ const php_uri_property_handler * property_handler = uri_property_handler_from_internal_uri (internal_uri , property_name );
146+ if (property_handler == NULL ) {
147+ return FAILURE ;
148+ }
149+
150+ return property_handler -> read (internal_uri , read_mode , zv );
151+ }
152+
153+ = == == ==
154+ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_get_property (const uri_internal_t * internal_uri , php_uri_property_name property_name , php_uri_component_read_mode read_mode , zval * zv )
155+ {
156+ const php_uri_property_handler * property_handler = uri_property_handler_from_internal_uri (internal_uri , property_name );
157+ if (property_handler == NULL ) {
158+ return FAILURE ;
159+ }
160+
161+ return property_handler -> read (internal_uri , read_mode , zv );
162+ >>>>>>> c5c6f7b15ec (uri : Remove `php_uri_parse ()` and `php_uri_free ()`)
126163}
127164
128165ZEND_ATTRIBUTE_NONNULL PHPAPI zend_result php_uri_get_scheme (const uri_internal_t * internal_uri , php_uri_component_read_mode read_mode , zval * zv )
@@ -165,96 +202,95 @@ ZEND_ATTRIBUTE_NONNULL PHPAPI zend_result php_uri_get_fragment(const uri_interna
165202 return internal_uri -> parser -> property_handler .fragment .read (internal_uri -> uri , read_mode , zv );
166203}
167204
168- ZEND_ATTRIBUTE_NONNULL PHPAPI void php_uri_free (uri_internal_t * internal_uri )
169- {
170- internal_uri -> parser -> free (internal_uri -> uri );
171- internal_uri -> uri = NULL ;
172- internal_uri -> parser = NULL ;
173- efree (internal_uri );
174- }
175-
176205ZEND_ATTRIBUTE_NONNULL PHPAPI php_uri * php_uri_parse_to_struct (
177206 const php_uri_parser * uri_parser , const char * uri_str , size_t uri_str_len , php_uri_component_read_mode read_mode , bool silent
178207) {
179- uri_internal_t * uri_internal = php_uri_parse (uri_parser , uri_str , uri_str_len , silent );
180- if (uri_internal == NULL ) {
208+ void * parsed = uri_parser -> parse (uri_str , uri_str_len ,
209+ /* base_url */ NULL , /* errors */ NULL , silent );
210+ if (parsed == NULL ) {
181211 return NULL ;
182212 }
183213
214+ uri_internal_t uri_internal = {
215+ .parser = uri_parser ,
216+ .uri = parsed ,
217+ };
218+
184219 php_uri * uri = ecalloc (1 , sizeof (* uri ));
185220 zval tmp ;
186221 zend_result result ;
187222
188- result = php_uri_get_scheme (uri_internal , read_mode , & tmp );
223+ result = php_uri_get_scheme (& uri_internal , read_mode , & tmp );
189224 if (result == FAILURE ) {
190225 goto error ;
191226 }
192227 if (Z_TYPE (tmp ) == IS_STRING ) {
193228 uri -> scheme = Z_STR (tmp );
194229 }
195230
196- result = php_uri_get_username (uri_internal , read_mode , & tmp );
231+ result = php_uri_get_username (& uri_internal , read_mode , & tmp );
197232 if (result == FAILURE ) {
198233 goto error ;
199234 }
200235 if (Z_TYPE (tmp ) == IS_STRING ) {
201236 uri -> user = Z_STR (tmp );
202237 }
203238
204- result = php_uri_get_password (uri_internal , read_mode , & tmp );
239+ result = php_uri_get_password (& uri_internal , read_mode , & tmp );
205240 if (result == FAILURE ) {
206241 goto error ;
207242 }
208243 if (Z_TYPE (tmp ) == IS_STRING ) {
209244 uri -> password = Z_STR (tmp );
210245 }
211246
212- result = php_uri_get_host (uri_internal , read_mode , & tmp );
247+ result = php_uri_get_host (& uri_internal , read_mode , & tmp );
213248 if (result == FAILURE ) {
214249 goto error ;
215250 }
216251 if (Z_TYPE (tmp ) == IS_STRING ) {
217252 uri -> host = Z_STR (tmp );
218253 }
219254
220- result = php_uri_get_port (uri_internal , read_mode , & tmp );
255+ result = php_uri_get_port (& uri_internal , read_mode , & tmp );
221256 if (result == FAILURE ) {
222257 goto error ;
223258 }
224259 if (Z_TYPE (tmp ) == IS_LONG ) {
225260 uri -> port = Z_LVAL (tmp );
226261 }
227262
228- result = php_uri_get_path (uri_internal , read_mode , & tmp );
263+ result = php_uri_get_path (& uri_internal , read_mode , & tmp );
229264 if (result == FAILURE ) {
230265 goto error ;
231266 }
232267 if (Z_TYPE (tmp ) == IS_STRING ) {
233268 uri -> path = Z_STR (tmp );
234269 }
235270
236- result = php_uri_get_query (uri_internal , read_mode , & tmp );
271+ result = php_uri_get_query (& uri_internal , read_mode , & tmp );
237272 if (result == FAILURE ) {
238273 goto error ;
239274 }
240275 if (Z_TYPE (tmp ) == IS_STRING ) {
241276 uri -> query = Z_STR (tmp );
242277 }
243278
244- result = php_uri_get_fragment (uri_internal , read_mode , & tmp );
279+ result = php_uri_get_fragment (& uri_internal , read_mode , & tmp );
245280 if (result == FAILURE ) {
246281 goto error ;
247282 }
248283 if (Z_TYPE (tmp ) == IS_STRING ) {
249284 uri -> fragment = Z_STR (tmp );
250285 }
251286
252- php_uri_free ( uri_internal );
287+ uri_parser -> free ( parsed );
253288
254289 return uri ;
255290
256291error :
257- php_uri_free (uri_internal );
292+
293+ uri_parser -> free (parsed );
258294 php_uri_struct_free (uri );
259295
260296 return NULL ;
@@ -351,7 +387,8 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 2) PHPAPI void php_uri_instantiate_uri(
351387 base_url = internal_base_url -> uri ;
352388 }
353389
354- void * uri = uri_parser -> parse (ZSTR_VAL (uri_str ), ZSTR_LEN (uri_str ), base_url , errors_zv != NULL ? & errors : NULL , !should_throw );
390+ void * uri = uri_parser -> parse (ZSTR_VAL (uri_str ), ZSTR_LEN (uri_str ),
391+ base_url , errors_zv != NULL ? & errors : NULL , !should_throw );
355392 if (UNEXPECTED (uri == NULL )) {
356393 if (should_throw ) {
357394 zval_ptr_dtor (& errors );
@@ -853,7 +890,8 @@ static void uri_unserialize(INTERNAL_FUNCTION_PARAMETERS)
853890 zend_throw_exception_ex (NULL , 0 , "Invalid serialization data for %s object" , ZSTR_VAL (object -> ce -> name ));
854891 RETURN_THROWS ();
855892 }
856- internal_uri -> uri = internal_uri -> parser -> parse (Z_STRVAL_P (uri_zv ), Z_STRLEN_P (uri_zv ), NULL , NULL , true);
893+ internal_uri -> uri = internal_uri -> parser -> parse (Z_STRVAL_P (uri_zv ), Z_STRLEN_P (uri_zv ),
894+ /* base_url */ NULL , /* errors */ NULL , /* silent */ true);
857895 if (internal_uri -> uri == NULL ) {
858896 zend_throw_exception_ex (NULL , 0 , "Invalid serialization data for %s object" , ZSTR_VAL (object -> ce -> name ));
859897 RETURN_THROWS ();
0 commit comments