@@ -111,21 +111,6 @@ PHPAPI const php_uri_parser *php_uri_get_parser(zend_string *uri_parser_name)
111
111
return zend_hash_find_ptr (& uri_parsers , uri_parser_name );
112
112
}
113
113
114
- 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 )
115
- {
116
- void * parsed = uri_parser -> parse (uri_str , uri_str_len , NULL , NULL , silent );
117
-
118
- if (parsed == NULL ) {
119
- return NULL ;
120
- }
121
-
122
- uri_internal_t * internal_uri = emalloc (sizeof (* internal_uri ));
123
- internal_uri -> parser = uri_parser ;
124
- internal_uri -> uri = parsed ;
125
-
126
- return internal_uri ;
127
- }
128
-
129
114
ZEND_ATTRIBUTE_NONNULL PHPAPI zend_result php_uri_get_scheme (const uri_internal_t * internal_uri , php_uri_component_read_mode read_mode , zval * zv )
130
115
{
131
116
return internal_uri -> parser -> property_handler .scheme .read (internal_uri -> uri , read_mode , zv );
@@ -166,96 +151,95 @@ ZEND_ATTRIBUTE_NONNULL PHPAPI zend_result php_uri_get_fragment(const uri_interna
166
151
return internal_uri -> parser -> property_handler .fragment .read (internal_uri -> uri , read_mode , zv );
167
152
}
168
153
169
- ZEND_ATTRIBUTE_NONNULL PHPAPI void php_uri_free (uri_internal_t * internal_uri )
170
- {
171
- internal_uri -> parser -> destroy (internal_uri -> uri );
172
- internal_uri -> uri = NULL ;
173
- internal_uri -> parser = NULL ;
174
- efree (internal_uri );
175
- }
176
-
177
154
ZEND_ATTRIBUTE_NONNULL PHPAPI php_uri * php_uri_parse_to_struct (
178
155
const php_uri_parser * uri_parser , const char * uri_str , size_t uri_str_len , php_uri_component_read_mode read_mode , bool silent
179
156
) {
180
- uri_internal_t * uri_internal = php_uri_parse (uri_parser , uri_str , uri_str_len , silent );
181
- if (uri_internal == NULL ) {
157
+ void * parsed = uri_parser -> parse (uri_str , uri_str_len ,
158
+ /* base_url */ NULL , /* errors */ NULL , silent );
159
+ if (parsed == NULL ) {
182
160
return NULL ;
183
161
}
184
162
163
+ uri_internal_t uri_internal = {
164
+ .parser = uri_parser ,
165
+ .uri = parsed ,
166
+ };
167
+
185
168
php_uri * uri = ecalloc (1 , sizeof (* uri ));
186
169
zval tmp ;
187
170
zend_result result ;
188
171
189
- result = php_uri_get_scheme (uri_internal , read_mode , & tmp );
172
+ result = php_uri_get_scheme (& uri_internal , read_mode , & tmp );
190
173
if (result == FAILURE ) {
191
174
goto error ;
192
175
}
193
176
if (Z_TYPE (tmp ) == IS_STRING ) {
194
177
uri -> scheme = Z_STR (tmp );
195
178
}
196
179
197
- result = php_uri_get_username (uri_internal , read_mode , & tmp );
180
+ result = php_uri_get_username (& 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 -> user = Z_STR (tmp );
203
186
}
204
187
205
- result = php_uri_get_password (uri_internal , read_mode , & tmp );
188
+ result = php_uri_get_password (& 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 -> password = Z_STR (tmp );
211
194
}
212
195
213
- result = php_uri_get_host (uri_internal , read_mode , & tmp );
196
+ result = php_uri_get_host (& 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 -> host = Z_STR (tmp );
219
202
}
220
203
221
- result = php_uri_get_port (uri_internal , read_mode , & tmp );
204
+ result = php_uri_get_port (& uri_internal , read_mode , & tmp );
222
205
if (result == FAILURE ) {
223
206
goto error ;
224
207
}
225
208
if (Z_TYPE (tmp ) == IS_LONG ) {
226
209
uri -> port = Z_LVAL (tmp );
227
210
}
228
211
229
- result = php_uri_get_path (uri_internal , read_mode , & tmp );
212
+ result = php_uri_get_path (& uri_internal , read_mode , & tmp );
230
213
if (result == FAILURE ) {
231
214
goto error ;
232
215
}
233
216
if (Z_TYPE (tmp ) == IS_STRING ) {
234
217
uri -> path = Z_STR (tmp );
235
218
}
236
219
237
- result = php_uri_get_query (uri_internal , read_mode , & tmp );
220
+ result = php_uri_get_query (& 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 -> query = Z_STR (tmp );
243
226
}
244
227
245
- result = php_uri_get_fragment (uri_internal , read_mode , & tmp );
228
+ result = php_uri_get_fragment (& 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 -> fragment = Z_STR (tmp );
251
234
}
252
235
253
- php_uri_free ( uri_internal );
236
+ uri_parser -> destroy ( parsed );
254
237
255
238
return uri ;
256
239
257
240
error :
258
- php_uri_free (uri_internal );
241
+
242
+ uri_parser -> destroy (parsed );
259
243
php_uri_struct_free (uri );
260
244
261
245
return NULL ;
@@ -352,7 +336,8 @@ ZEND_ATTRIBUTE_NONNULL_ARGS(1, 2) PHPAPI void php_uri_instantiate_uri(
352
336
base_url = internal_base_url -> uri ;
353
337
}
354
338
355
- void * uri = uri_parser -> parse (ZSTR_VAL (uri_str ), ZSTR_LEN (uri_str ), base_url , errors_zv != NULL ? & errors : NULL , !should_throw );
339
+ void * uri = uri_parser -> parse (ZSTR_VAL (uri_str ), ZSTR_LEN (uri_str ),
340
+ base_url , errors_zv != NULL ? & errors : NULL , !should_throw );
356
341
if (UNEXPECTED (uri == NULL )) {
357
342
if (should_throw ) {
358
343
zval_ptr_dtor (& errors );
@@ -857,7 +842,8 @@ static void uri_unserialize(INTERNAL_FUNCTION_PARAMETERS)
857
842
zend_throw_exception_ex (NULL , 0 , "Invalid serialization data for %s object" , ZSTR_VAL (object -> ce -> name ));
858
843
RETURN_THROWS ();
859
844
}
860
- internal_uri -> uri = internal_uri -> parser -> parse (Z_STRVAL_P (uri_zv ), Z_STRLEN_P (uri_zv ), NULL , NULL , true);
845
+ internal_uri -> uri = internal_uri -> parser -> parse (Z_STRVAL_P (uri_zv ), Z_STRLEN_P (uri_zv ),
846
+ /* base_url */ NULL , /* errors */ NULL , /* silent */ true);
861
847
if (internal_uri -> uri == NULL ) {
862
848
zend_throw_exception_ex (NULL , 0 , "Invalid serialization data for %s object" , ZSTR_VAL (object -> ce -> name ));
863
849
RETURN_THROWS ();
0 commit comments