@@ -57,13 +57,22 @@ static const zend_module_dep uri_deps[] = {
5757
5858static zend_array uri_parsers ;
5959
60- #define Z_RFC3986_URI_PROP_SCHEME_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 0)
61- #define Z_RFC3986_URI_PROP_USERINFO_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 1)
62- #define Z_RFC3986_URI_PROP_HOST_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 2)
63- #define Z_RFC3986_URI_PROP_PORT_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 3)
64- #define Z_RFC3986_URI_PROP_PATH_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 4)
65- #define Z_RFC3986_URI_PROP_QUERY_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 5)
66- #define Z_RFC3986_URI_PROP_FRAGMENT_P (zv ) OBJ_PROP_NUM(Z_OBJ_P(zv), 6)
60+ static zend_always_inline zval * php_uri_deref (zval * zv )
61+ {
62+ if (UNEXPECTED (Z_TYPE_P (zv ) == IS_REFERENCE )) {
63+ return Z_REFVAL_P (zv );
64+ }
65+
66+ return zv ;
67+ }
68+
69+ #define Z_RFC3986_URI_PROP_SCHEME_P (zv ) php_uri_deref(OBJ_PROP_NUM(Z_OBJ_P(zv), 0))
70+ #define Z_RFC3986_URI_PROP_USERINFO_P (zv ) php_uri_deref(OBJ_PROP_NUM(Z_OBJ_P(zv), 1))
71+ #define Z_RFC3986_URI_PROP_HOST_P (zv ) php_uri_deref(OBJ_PROP_NUM(Z_OBJ_P(zv), 2))
72+ #define Z_RFC3986_URI_PROP_PORT_P (zv ) php_uri_deref(OBJ_PROP_NUM(Z_OBJ_P(zv), 3))
73+ #define Z_RFC3986_URI_PROP_PATH_P (zv ) php_uri_deref(OBJ_PROP_NUM(Z_OBJ_P(zv), 4))
74+ #define Z_RFC3986_URI_PROP_QUERY_P (zv ) php_uri_deref(OBJ_PROP_NUM(Z_OBJ_P(zv), 5))
75+ #define Z_RFC3986_URI_PROP_FRAGMENT_P (zv ) php_uri_deref(OBJ_PROP_NUM(Z_OBJ_P(zv), 6))
6776
6877static HashTable * uri_get_debug_properties (php_uri_object * object )
6978{
@@ -1060,13 +1069,14 @@ PHP_METHOD(Uri_Rfc3986_UriBuilder, reset)
10601069{
10611070 ZEND_PARSE_PARAMETERS_NONE ();
10621071
1063- ZVAL_NULL (Z_RFC3986_URI_PROP_SCHEME_P (ZEND_THIS ));
1064- ZVAL_NULL (Z_RFC3986_URI_PROP_USERINFO_P (ZEND_THIS ));
1065- ZVAL_NULL (Z_RFC3986_URI_PROP_HOST_P (ZEND_THIS ));
1066- ZVAL_NULL (Z_RFC3986_URI_PROP_PORT_P (ZEND_THIS ));
1072+ convert_to_null (Z_RFC3986_URI_PROP_SCHEME_P (ZEND_THIS ));
1073+ convert_to_null (Z_RFC3986_URI_PROP_USERINFO_P (ZEND_THIS ));
1074+ convert_to_null (Z_RFC3986_URI_PROP_HOST_P (ZEND_THIS ));
1075+ convert_to_null (Z_RFC3986_URI_PROP_PORT_P (ZEND_THIS ));
1076+ zval_ptr_dtor (Z_RFC3986_URI_PROP_PATH_P (ZEND_THIS ));
10671077 ZVAL_EMPTY_STRING (Z_RFC3986_URI_PROP_PATH_P (ZEND_THIS ));
1068- ZVAL_NULL (Z_RFC3986_URI_PROP_QUERY_P (ZEND_THIS ));
1069- ZVAL_NULL (Z_RFC3986_URI_PROP_FRAGMENT_P (ZEND_THIS ));
1078+ convert_to_null (Z_RFC3986_URI_PROP_QUERY_P (ZEND_THIS ));
1079+ convert_to_null (Z_RFC3986_URI_PROP_FRAGMENT_P (ZEND_THIS ));
10701080
10711081 RETVAL_COPY (ZEND_THIS );
10721082}
0 commit comments