@@ -116,21 +116,6 @@ PHPAPI uri_parser_t *php_uri_get_parser(const zend_string *uri_parser_name)
116
116
return uri_parser_by_name (ZSTR_VAL (uri_parser_name ), ZSTR_LEN (uri_parser_name ));
117
117
}
118
118
119
- ZEND_ATTRIBUTE_NONNULL PHPAPI uri_internal_t * php_uri_parse (const uri_parser_t * uri_parser , const char * uri_str , size_t uri_str_len , bool silent )
120
- {
121
- void * parsed = uri_parser -> parse_uri (uri_str , uri_str_len , NULL , NULL , silent );
122
-
123
- if (parsed == NULL ) {
124
- return NULL ;
125
- }
126
-
127
- uri_internal_t * internal_uri = emalloc (sizeof (* internal_uri ));
128
- internal_uri -> parser = uri_parser ;
129
- internal_uri -> uri = parsed ;
130
-
131
- return internal_uri ;
132
- }
133
-
134
119
ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_get_property (const uri_internal_t * internal_uri , uri_property_name_t property_name , uri_component_read_mode_t read_mode , zval * zv )
135
120
{
136
121
const uri_property_handler_t * property_handler = uri_property_handler_from_internal_uri (internal_uri , property_name );
@@ -181,96 +166,95 @@ ZEND_ATTRIBUTE_NONNULL PHPAPI zend_result php_uri_get_fragment(const uri_interna
181
166
return php_uri_get_property (internal_uri , URI_PROPERTY_NAME_FRAGMENT , read_mode , zv );
182
167
}
183
168
184
- ZEND_ATTRIBUTE_NONNULL PHPAPI void php_uri_free (uri_internal_t * internal_uri )
185
- {
186
- internal_uri -> parser -> free_uri (internal_uri -> uri );
187
- internal_uri -> uri = NULL ;
188
- internal_uri -> parser = NULL ;
189
- efree (internal_uri );
190
- }
191
-
192
169
ZEND_ATTRIBUTE_NONNULL PHPAPI php_uri * php_uri_parse_to_struct (
193
170
const uri_parser_t * uri_parser , const char * uri_str , size_t uri_str_len , uri_component_read_mode_t read_mode , bool silent
194
171
) {
195
- uri_internal_t * uri_internal = php_uri_parse (uri_parser , uri_str , uri_str_len , silent );
196
- if (uri_internal == NULL ) {
172
+ void * parsed = uri_parser -> parse_uri (uri_str , uri_str_len ,
173
+ /* base_url */ NULL , /* errors */ NULL , silent );
174
+ if (parsed == NULL ) {
197
175
return NULL ;
198
176
}
199
177
178
+ uri_internal_t uri_internal = {
179
+ .parser = uri_parser ,
180
+ .uri = parsed ,
181
+ };
182
+
200
183
php_uri * uri = ecalloc (1 , sizeof (* uri ));
201
184
zval tmp ;
202
185
zend_result result ;
203
186
204
- result = php_uri_get_scheme (uri_internal , read_mode , & tmp );
187
+ result = php_uri_get_scheme (& uri_internal , read_mode , & tmp );
205
188
if (result == FAILURE ) {
206
189
goto error ;
207
190
}
208
191
if (Z_TYPE (tmp ) == IS_STRING ) {
209
192
uri -> scheme = Z_STR (tmp );
210
193
}
211
194
212
- result = php_uri_get_username (uri_internal , read_mode , & tmp );
195
+ result = php_uri_get_username (& uri_internal , read_mode , & tmp );
213
196
if (result == FAILURE ) {
214
197
goto error ;
215
198
}
216
199
if (Z_TYPE (tmp ) == IS_STRING ) {
217
200
uri -> user = Z_STR (tmp );
218
201
}
219
202
220
- result = php_uri_get_password (uri_internal , read_mode , & tmp );
203
+ result = php_uri_get_password (& uri_internal , read_mode , & tmp );
221
204
if (result == FAILURE ) {
222
205
goto error ;
223
206
}
224
207
if (Z_TYPE (tmp ) == IS_STRING ) {
225
208
uri -> password = Z_STR (tmp );
226
209
}
227
210
228
- result = php_uri_get_host (uri_internal , read_mode , & tmp );
211
+ result = php_uri_get_host (& uri_internal , read_mode , & tmp );
229
212
if (result == FAILURE ) {
230
213
goto error ;
231
214
}
232
215
if (Z_TYPE (tmp ) == IS_STRING ) {
233
216
uri -> host = Z_STR (tmp );
234
217
}
235
218
236
- result = php_uri_get_port (uri_internal , read_mode , & tmp );
219
+ result = php_uri_get_port (& uri_internal , read_mode , & tmp );
237
220
if (result == FAILURE ) {
238
221
goto error ;
239
222
}
240
223
if (Z_TYPE (tmp ) == IS_LONG ) {
241
224
uri -> port = Z_LVAL (tmp );
242
225
}
243
226
244
- result = php_uri_get_path (uri_internal , read_mode , & tmp );
227
+ result = php_uri_get_path (& uri_internal , read_mode , & tmp );
245
228
if (result == FAILURE ) {
246
229
goto error ;
247
230
}
248
231
if (Z_TYPE (tmp ) == IS_STRING ) {
249
232
uri -> path = Z_STR (tmp );
250
233
}
251
234
252
- result = php_uri_get_query (uri_internal , read_mode , & tmp );
235
+ result = php_uri_get_query (& uri_internal , read_mode , & tmp );
253
236
if (result == FAILURE ) {
254
237
goto error ;
255
238
}
256
239
if (Z_TYPE (tmp ) == IS_STRING ) {
257
240
uri -> query = Z_STR (tmp );
258
241
}
259
242
260
- result = php_uri_get_fragment (uri_internal , read_mode , & tmp );
243
+ result = php_uri_get_fragment (& uri_internal , read_mode , & tmp );
261
244
if (result == FAILURE ) {
262
245
goto error ;
263
246
}
264
247
if (Z_TYPE (tmp ) == IS_STRING ) {
265
248
uri -> fragment = Z_STR (tmp );
266
249
}
267
250
268
- php_uri_free ( uri_internal );
251
+ uri_parser -> free_uri ( parsed );
269
252
270
253
return uri ;
271
254
272
255
error :
273
- php_uri_free (uri_internal );
256
+
257
+ uri_parser -> free_uri (parsed );
274
258
php_uri_struct_free (uri );
275
259
276
260
return NULL ;
@@ -347,7 +331,8 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 2) PHPAPI void php_uri_instantiate_uri(
347
331
base_url = internal_base_url -> uri ;
348
332
}
349
333
350
- void * uri = uri_parser -> parse_uri (ZSTR_VAL (uri_str ), ZSTR_LEN (uri_str ), base_url , should_throw || errors_zv != NULL ? & errors : NULL , !should_throw );
334
+ void * uri = uri_parser -> parse_uri (ZSTR_VAL (uri_str ), ZSTR_LEN (uri_str ),
335
+ base_url , should_throw || errors_zv != NULL ? & errors : NULL , !should_throw );
351
336
if (UNEXPECTED (uri == NULL )) {
352
337
if (should_throw ) {
353
338
zval_ptr_dtor (& errors );
0 commit comments