@@ -335,6 +335,7 @@ PHP_FUNCTION(parse_url)
335
335
size_t str_len ;
336
336
php_url * resource ;
337
337
zend_long key = -1 ;
338
+ zval tmp ;
338
339
339
340
ZEND_PARSE_PARAMETERS_START (1 , 2 )
340
341
Z_PARAM_STRING (str , str_len )
@@ -385,22 +386,38 @@ PHP_FUNCTION(parse_url)
385
386
array_init (return_value );
386
387
387
388
/* add the various elements to the array */
388
- if (resource -> scheme != NULL )
389
- add_assoc_string (return_value , "scheme" , resource -> scheme );
390
- if (resource -> host != NULL )
391
- add_assoc_string (return_value , "host" , resource -> host );
392
- if (resource -> port != 0 )
393
- add_assoc_long (return_value , "port" , resource -> port );
394
- if (resource -> user != NULL )
395
- add_assoc_string (return_value , "user" , resource -> user );
396
- if (resource -> pass != NULL )
397
- add_assoc_string (return_value , "pass" , resource -> pass );
398
- if (resource -> path != NULL )
399
- add_assoc_string (return_value , "path" , resource -> path );
400
- if (resource -> query != NULL )
401
- add_assoc_string (return_value , "query" , resource -> query );
402
- if (resource -> fragment != NULL )
403
- add_assoc_string (return_value , "fragment" , resource -> fragment );
389
+ if (resource -> scheme != NULL ) {
390
+ ZVAL_STRING (& tmp , resource -> scheme );
391
+ zend_hash_add_new (Z_ARRVAL_P (return_value ), ZSTR_KNOWN (ZEND_STR_SCHEME ), & tmp );
392
+ }
393
+ if (resource -> host != NULL ) {
394
+ ZVAL_STRING (& tmp , resource -> host );
395
+ zend_hash_add_new (Z_ARRVAL_P (return_value ), ZSTR_KNOWN (ZEND_STR_HOST ), & tmp );
396
+ }
397
+ if (resource -> port != 0 ) {
398
+ ZVAL_LONG (& tmp , resource -> port );
399
+ zend_hash_add_new (Z_ARRVAL_P (return_value ), ZSTR_KNOWN (ZEND_STR_PORT ), & tmp );
400
+ }
401
+ if (resource -> user != NULL ) {
402
+ ZVAL_STRING (& tmp , resource -> user );
403
+ zend_hash_add_new (Z_ARRVAL_P (return_value ), ZSTR_KNOWN (ZEND_STR_USER ), & tmp );
404
+ }
405
+ if (resource -> pass != NULL ) {
406
+ ZVAL_STRING (& tmp , resource -> pass );
407
+ zend_hash_add_new (Z_ARRVAL_P (return_value ), ZSTR_KNOWN (ZEND_STR_PASS ), & tmp );
408
+ }
409
+ if (resource -> path != NULL ) {
410
+ ZVAL_STRING (& tmp , resource -> path );
411
+ zend_hash_add_new (Z_ARRVAL_P (return_value ), ZSTR_KNOWN (ZEND_STR_PATH ), & tmp );
412
+ }
413
+ if (resource -> query != NULL ) {
414
+ ZVAL_STRING (& tmp , resource -> query );
415
+ zend_hash_add_new (Z_ARRVAL_P (return_value ), ZSTR_KNOWN (ZEND_STR_QUERY ), & tmp );
416
+ }
417
+ if (resource -> fragment != NULL ) {
418
+ ZVAL_STRING (& tmp , resource -> fragment );
419
+ zend_hash_add_new (Z_ARRVAL_P (return_value ), ZSTR_KNOWN (ZEND_STR_FRAGMENT ), & tmp );
420
+ }
404
421
done :
405
422
php_url_free (resource );
406
423
}
0 commit comments