@@ -64,6 +64,11 @@ static inline size_t get_text_range_length(const UriTextRangeA *range)
6464 return range -> afterLast - range -> first ;
6565}
6666
67+ static inline bool has_text_range (const UriTextRangeA * range )
68+ {
69+ return range -> first != NULL && range -> afterLast != NULL ;
70+ }
71+
6772ZEND_ATTRIBUTE_NONNULL static void copy_uri (UriUriA * new_uriparser_uri , const UriUriA * uriparser_uri )
6873{
6974 int result = uriCopyUriMmA (new_uriparser_uri , uriparser_uri , mm );
@@ -97,11 +102,9 @@ ZEND_ATTRIBUTE_NONNULL static UriUriA *get_uri_for_reading(php_uri_parser_rfc398
97102ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_scheme_read (const uri_internal_t * internal_uri , uri_component_read_mode_t read_mode , zval * retval )
98103{
99104 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
100- ZEND_ASSERT (uriparser_uri != NULL );
101105
102106 if (uriparser_uri -> scheme .first != NULL && uriparser_uri -> scheme .afterLast != NULL ) {
103- zend_string * str = zend_string_init (uriparser_uri -> scheme .first , get_text_range_length (& uriparser_uri -> scheme ), false);
104- ZVAL_NEW_STR (retval , str );
107+ ZVAL_STRINGL (retval , uriparser_uri -> scheme .first , get_text_range_length (& uriparser_uri -> scheme ));
105108 } else {
106109 ZVAL_NULL (retval );
107110 }
@@ -112,9 +115,8 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_scheme_read(con
112115ZEND_ATTRIBUTE_NONNULL zend_result php_uri_parser_rfc3986_userinfo_read (const uri_internal_t * internal_uri , uri_component_read_mode_t read_mode , zval * retval )
113116{
114117 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
115- ZEND_ASSERT (uriparser_uri != NULL );
116118
117- if (uriparser_uri -> userInfo . first != NULL && uriparser_uri -> userInfo . afterLast != NULL ) {
119+ if (has_text_range ( & uriparser_uri -> userInfo ) ) {
118120 ZVAL_STRINGL (retval , uriparser_uri -> userInfo .first , get_text_range_length (& uriparser_uri -> userInfo ));
119121 } else {
120122 ZVAL_NULL (retval );
@@ -126,9 +128,8 @@ ZEND_ATTRIBUTE_NONNULL zend_result php_uri_parser_rfc3986_userinfo_read(const ur
126128ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_username_read (const uri_internal_t * internal_uri , uri_component_read_mode_t read_mode , zval * retval )
127129{
128130 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
129- ZEND_ASSERT (uriparser_uri != NULL );
130131
131- if (uriparser_uri -> userInfo . first != NULL && uriparser_uri -> userInfo . afterLast != NULL ) {
132+ if (has_text_range ( & uriparser_uri -> userInfo ) ) {
132133 size_t length = get_text_range_length (& uriparser_uri -> userInfo );
133134 const char * c = memchr (uriparser_uri -> userInfo .first , ':' , length );
134135
@@ -149,9 +150,8 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_username_read(c
149150ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_password_read (const uri_internal_t * internal_uri , uri_component_read_mode_t read_mode , zval * retval )
150151{
151152 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
152- ZEND_ASSERT (uriparser_uri != NULL );
153153
154- if (uriparser_uri -> userInfo . first != NULL && uriparser_uri -> userInfo . afterLast != NULL ) {
154+ if (has_text_range ( & uriparser_uri -> userInfo ) ) {
155155 const char * c = memchr (uriparser_uri -> userInfo .first , ':' , get_text_range_length (& uriparser_uri -> userInfo ));
156156
157157 if (c != NULL && uriparser_uri -> userInfo .afterLast - c - 1 > 0 ) {
@@ -169,9 +169,8 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_password_read(c
169169ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_host_read (const uri_internal_t * internal_uri , uri_component_read_mode_t read_mode , zval * retval )
170170{
171171 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
172- ZEND_ASSERT (uriparser_uri != NULL );
173172
174- if (uriparser_uri -> hostText . first != NULL && uriparser_uri -> hostText . afterLast != NULL ) {
173+ if (has_text_range ( & uriparser_uri -> hostText ) ) {
175174 if (uriparser_uri -> hostData .ip6 != NULL || uriparser_uri -> hostData .ipFuture .first != NULL ) {
176175 /* the textual representation of the host is always accessible in the .hostText field no matter what the host is */
177176 smart_str host_str = {0 };
@@ -205,9 +204,8 @@ ZEND_ATTRIBUTE_NONNULL static size_t str_to_int(const char *str, size_t len)
205204ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_port_read (const uri_internal_t * internal_uri , uri_component_read_mode_t read_mode , zval * retval )
206205{
207206 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
208- ZEND_ASSERT (uriparser_uri != NULL );
209207
210- if (uriparser_uri -> portText . first != NULL && uriparser_uri -> portText . afterLast != NULL ) {
208+ if (has_text_range ( & uriparser_uri -> portText ) ) {
211209 ZVAL_LONG (retval , str_to_int (uriparser_uri -> portText .first , get_text_range_length (& uriparser_uri -> portText )));
212210 } else {
213211 ZVAL_NULL (retval );
@@ -219,7 +217,6 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_port_read(const
219217ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_path_read (const uri_internal_t * internal_uri , uri_component_read_mode_t read_mode , zval * retval )
220218{
221219 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
222- ZEND_ASSERT (uriparser_uri != NULL );
223220
224221 if (uriparser_uri -> pathHead != NULL ) {
225222 smart_str str = {0 };
@@ -248,9 +245,8 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_path_read(const
248245ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_query_read (const uri_internal_t * internal_uri , uri_component_read_mode_t read_mode , zval * retval )
249246{
250247 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
251- ZEND_ASSERT (uriparser_uri != NULL );
252248
253- if (uriparser_uri -> query . first != NULL && uriparser_uri -> query . afterLast != NULL ) {
249+ if (has_text_range ( & uriparser_uri -> query ) ) {
254250 ZVAL_STRINGL (retval , uriparser_uri -> query .first , get_text_range_length (& uriparser_uri -> query ));
255251 } else {
256252 ZVAL_NULL (retval );
@@ -262,9 +258,8 @@ ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_query_read(cons
262258ZEND_ATTRIBUTE_NONNULL static zend_result php_uri_parser_rfc3986_fragment_read (const uri_internal_t * internal_uri , uri_component_read_mode_t read_mode , zval * retval )
263259{
264260 const UriUriA * uriparser_uri = get_uri_for_reading (internal_uri -> uri , read_mode );
265- ZEND_ASSERT (uriparser_uri != NULL );
266261
267- if (uriparser_uri -> fragment . first != NULL && uriparser_uri -> fragment . afterLast != NULL ) {
262+ if (has_text_range ( & uriparser_uri -> fragment ) ) {
268263 ZVAL_STRINGL (retval , uriparser_uri -> fragment .first , get_text_range_length (& uriparser_uri -> fragment ));
269264 } else {
270265 ZVAL_NULL (retval );
0 commit comments