@@ -109,21 +109,6 @@ PHPAPI const php_uri_parser *php_uri_get_parser(zend_string *uri_parser_name)
109
109
return zend_hash_find_ptr (& uri_parsers , uri_parser_name );
110
110
}
111
111
112
- 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 )
113
- {
114
- void * parsed = uri_parser -> parse (uri_str , uri_str_len , NULL , NULL , silent );
115
-
116
- if (parsed == NULL ) {
117
- return NULL ;
118
- }
119
-
120
- uri_internal_t * internal_uri = emalloc (sizeof (* internal_uri ));
121
- internal_uri -> parser = uri_parser ;
122
- internal_uri -> uri = parsed ;
123
-
124
- return internal_uri ;
125
- }
126
-
127
112
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 )
128
113
{
129
114
const php_uri_property_handler * property_handler = uri_property_handler_from_internal_uri (internal_uri , property_name );
@@ -174,96 +159,95 @@ ZEND_ATTRIBUTE_NONNULL PHPAPI zend_result php_uri_get_fragment(const uri_interna
174
159
return php_uri_get_property (internal_uri , PHP_URI_PROPERTY_NAME_FRAGMENT , read_mode , zv );
175
160
}
176
161
177
- ZEND_ATTRIBUTE_NONNULL PHPAPI void php_uri_free (uri_internal_t * internal_uri )
178
- {
179
- internal_uri -> parser -> free (internal_uri -> uri );
180
- internal_uri -> uri = NULL ;
181
- internal_uri -> parser = NULL ;
182
- efree (internal_uri );
183
- }
184
-
185
162
ZEND_ATTRIBUTE_NONNULL PHPAPI php_uri * php_uri_parse_to_struct (
186
163
const php_uri_parser * uri_parser , const char * uri_str , size_t uri_str_len , php_uri_component_read_mode read_mode , bool silent
187
164
) {
188
- uri_internal_t * uri_internal = php_uri_parse (uri_parser , uri_str , uri_str_len , silent );
189
- if (uri_internal == NULL ) {
165
+ void * parsed = uri_parser -> parse (uri_str , uri_str_len ,
166
+ /* base_url */ NULL , /* errors */ NULL , silent );
167
+ if (parsed == NULL ) {
190
168
return NULL ;
191
169
}
192
170
171
+ uri_internal_t uri_internal = {
172
+ .parser = uri_parser ,
173
+ .uri = parsed ,
174
+ };
175
+
193
176
php_uri * uri = ecalloc (1 , sizeof (* uri ));
194
177
zval tmp ;
195
178
zend_result result ;
196
179
197
- result = php_uri_get_scheme (uri_internal , read_mode , & tmp );
180
+ result = php_uri_get_scheme (& uri_internal , read_mode , & tmp );
198
181
if (result == FAILURE ) {
199
182
goto error ;
200
183
}
201
184
if (Z_TYPE (tmp ) == IS_STRING ) {
202
185
uri -> scheme = Z_STR (tmp );
203
186
}
204
187
205
- result = php_uri_get_username (uri_internal , read_mode , & tmp );
188
+ result = php_uri_get_username (& uri_internal , read_mode , & tmp );
206
189
if (result == FAILURE ) {
207
190
goto error ;
208
191
}
209
192
if (Z_TYPE (tmp ) == IS_STRING ) {
210
193
uri -> user = Z_STR (tmp );
211
194
}
212
195
213
- result = php_uri_get_password (uri_internal , read_mode , & tmp );
196
+ result = php_uri_get_password (& uri_internal , read_mode , & tmp );
214
197
if (result == FAILURE ) {
215
198
goto error ;
216
199
}
217
200
if (Z_TYPE (tmp ) == IS_STRING ) {
218
201
uri -> password = Z_STR (tmp );
219
202
}
220
203
221
- result = php_uri_get_host (uri_internal , read_mode , & tmp );
204
+ result = php_uri_get_host (& uri_internal , read_mode , & tmp );
222
205
if (result == FAILURE ) {
223
206
goto error ;
224
207
}
225
208
if (Z_TYPE (tmp ) == IS_STRING ) {
226
209
uri -> host = Z_STR (tmp );
227
210
}
228
211
229
- result = php_uri_get_port (uri_internal , read_mode , & tmp );
212
+ result = php_uri_get_port (& uri_internal , read_mode , & tmp );
230
213
if (result == FAILURE ) {
231
214
goto error ;
232
215
}
233
216
if (Z_TYPE (tmp ) == IS_LONG ) {
234
217
uri -> port = Z_LVAL (tmp );
235
218
}
236
219
237
- result = php_uri_get_path (uri_internal , read_mode , & tmp );
220
+ result = php_uri_get_path (& uri_internal , read_mode , & tmp );
238
221
if (result == FAILURE ) {
239
222
goto error ;
240
223
}
241
224
if (Z_TYPE (tmp ) == IS_STRING ) {
242
225
uri -> path = Z_STR (tmp );
243
226
}
244
227
245
- result = php_uri_get_query (uri_internal , read_mode , & tmp );
228
+ result = php_uri_get_query (& uri_internal , read_mode , & tmp );
246
229
if (result == FAILURE ) {
247
230
goto error ;
248
231
}
249
232
if (Z_TYPE (tmp ) == IS_STRING ) {
250
233
uri -> query = Z_STR (tmp );
251
234
}
252
235
253
- result = php_uri_get_fragment (uri_internal , read_mode , & tmp );
236
+ result = php_uri_get_fragment (& uri_internal , read_mode , & tmp );
254
237
if (result == FAILURE ) {
255
238
goto error ;
256
239
}
257
240
if (Z_TYPE (tmp ) == IS_STRING ) {
258
241
uri -> fragment = Z_STR (tmp );
259
242
}
260
243
261
- php_uri_free ( uri_internal );
244
+ uri_parser -> free ( parsed );
262
245
263
246
return uri ;
264
247
265
248
error :
266
- php_uri_free (uri_internal );
249
+
250
+ uri_parser -> free (parsed );
267
251
php_uri_struct_free (uri );
268
252
269
253
return NULL ;
@@ -356,7 +340,8 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 2) PHPAPI void php_uri_instantiate_uri(
356
340
base_url = internal_base_url -> uri ;
357
341
}
358
342
359
- void * uri = uri_parser -> parse (ZSTR_VAL (uri_str ), ZSTR_LEN (uri_str ), base_url , errors_zv != NULL ? & errors : NULL , !should_throw );
343
+ void * uri = uri_parser -> parse (ZSTR_VAL (uri_str ), ZSTR_LEN (uri_str ),
344
+ base_url , errors_zv != NULL ? & errors : NULL , !should_throw );
360
345
if (UNEXPECTED (uri == NULL )) {
361
346
if (should_throw ) {
362
347
zval_ptr_dtor (& errors );
@@ -853,7 +838,8 @@ static void uri_unserialize(INTERNAL_FUNCTION_PARAMETERS)
853
838
854
839
uri_internal_t * internal_uri = uri_internal_from_obj (object );
855
840
internal_uri -> parser -> free (internal_uri -> uri );
856
- internal_uri -> uri = internal_uri -> parser -> parse (Z_STRVAL_P (uri_zv ), Z_STRLEN_P (uri_zv ), NULL , NULL , true);
841
+ internal_uri -> uri = internal_uri -> parser -> parse (Z_STRVAL_P (uri_zv ), Z_STRLEN_P (uri_zv ),
842
+ /* base_url */ NULL , /* errors */ NULL , /* silent */ true);
857
843
if (internal_uri -> uri == NULL ) {
858
844
zend_throw_exception_ex (NULL , 0 , "Invalid serialization data for %s object" , ZSTR_VAL (object -> ce -> name ));
859
845
RETURN_THROWS ();
0 commit comments