@@ -73,7 +73,7 @@ static void lexbor_cleanup_parser(void)
73
73
* When errors is NULL, the caller is not interested in the additional error information,
74
74
* so the function does nothing.
75
75
*/
76
- static zend_string * fill_errors (zval * errors )
76
+ static const char * fill_errors (zval * errors )
77
77
{
78
78
if (errors == NULL ) {
79
79
return NULL ;
@@ -87,140 +87,138 @@ static zend_string *fill_errors(zval *errors)
87
87
return NULL ;
88
88
}
89
89
90
- zend_string * result = NULL ;
90
+ const char * result = NULL ;
91
91
lexbor_plog_entry_t * lxb_error ;
92
92
while ((lxb_error = lexbor_array_obj_pop (& lexbor_parser .log -> list )) != NULL ) {
93
93
zval error ;
94
94
object_init_ex (& error , uri_whatwg_url_validation_error_ce );
95
95
zend_update_property_string (uri_whatwg_url_validation_error_ce , Z_OBJ (error ), ZEND_STRL ("context" ), (const char * ) lxb_error -> data );
96
96
97
- zend_string * error_str ;
97
+ const char * error_str ;
98
98
zval failure ;
99
99
switch (lxb_error -> id ) {
100
100
case LXB_URL_ERROR_TYPE_DOMAIN_TO_ASCII :
101
- error_str = ZSTR_INIT_LITERAL ( "DomainToAscii" , false) ;
101
+ error_str = "DomainToAscii" ;
102
102
ZVAL_TRUE (& failure );
103
103
break ;
104
104
case LXB_URL_ERROR_TYPE_DOMAIN_TO_UNICODE :
105
- error_str = ZSTR_INIT_LITERAL ( "DomainToUnicode" , false) ;
105
+ error_str = "DomainToUnicode" ;
106
106
ZVAL_FALSE (& failure );
107
107
break ;
108
108
case LXB_URL_ERROR_TYPE_DOMAIN_INVALID_CODE_POINT :
109
- error_str = ZSTR_INIT_LITERAL ( "DomainInvalidCodePoint" , false) ;
109
+ error_str = "DomainInvalidCodePoint" ;
110
110
ZVAL_TRUE (& failure );
111
111
break ;
112
112
case LXB_URL_ERROR_TYPE_HOST_INVALID_CODE_POINT :
113
- error_str = ZSTR_INIT_LITERAL ( "HostInvalidCodePoint" , false) ;
113
+ error_str = "HostInvalidCodePoint" ;
114
114
ZVAL_TRUE (& failure );
115
115
break ;
116
116
case LXB_URL_ERROR_TYPE_IPV4_EMPTY_PART :
117
- error_str = ZSTR_INIT_LITERAL ( "Ipv4EmptyPart" , false) ;
117
+ error_str = "Ipv4EmptyPart" ;
118
118
ZVAL_FALSE (& failure );
119
119
break ;
120
120
case LXB_URL_ERROR_TYPE_IPV4_TOO_MANY_PARTS :
121
- error_str = ZSTR_INIT_LITERAL ( "Ipv4TooManyParts" , false) ;
121
+ error_str = "Ipv4TooManyParts" ;
122
122
ZVAL_TRUE (& failure );
123
123
break ;
124
124
case LXB_URL_ERROR_TYPE_IPV4_NON_NUMERIC_PART :
125
- error_str = ZSTR_INIT_LITERAL ( "Ipv4NonNumericPart" , false) ;
125
+ error_str = "Ipv4NonNumericPart" ;
126
126
ZVAL_TRUE (& failure );
127
127
break ;
128
128
case LXB_URL_ERROR_TYPE_IPV4_NON_DECIMAL_PART :
129
- error_str = ZSTR_INIT_LITERAL ( "Ipv4NonDecimalPart" , false) ;
129
+ error_str = "Ipv4NonDecimalPart" ;
130
130
ZVAL_FALSE (& failure );
131
131
break ;
132
132
case LXB_URL_ERROR_TYPE_IPV4_OUT_OF_RANGE_PART :
133
- error_str = ZSTR_INIT_LITERAL ( "Ipv4OutOfRangePart" , false) ;
133
+ error_str = "Ipv4OutOfRangePart" ;
134
134
ZVAL_TRUE (& failure );
135
135
break ;
136
136
case LXB_URL_ERROR_TYPE_IPV6_UNCLOSED :
137
- error_str = ZSTR_INIT_LITERAL ( "Ipv6Unclosed" , false) ;
137
+ error_str = "Ipv6Unclosed" ;
138
138
ZVAL_TRUE (& failure );
139
139
break ;
140
140
case LXB_URL_ERROR_TYPE_IPV6_INVALID_COMPRESSION :
141
- error_str = ZSTR_INIT_LITERAL ( "Ipv6InvalidCompression" , false) ;
141
+ error_str = "Ipv6InvalidCompression" ;
142
142
ZVAL_TRUE (& failure );
143
143
break ;
144
144
case LXB_URL_ERROR_TYPE_IPV6_TOO_MANY_PIECES :
145
- error_str = ZSTR_INIT_LITERAL ( "Ipv6TooManyPieces" , false) ;
145
+ error_str = "Ipv6TooManyPieces" ;
146
146
ZVAL_TRUE (& failure );
147
147
break ;
148
148
case LXB_URL_ERROR_TYPE_IPV6_MULTIPLE_COMPRESSION :
149
- error_str = ZSTR_INIT_LITERAL ( "Ipv6MultipleCompression" , false) ;
149
+ error_str = "Ipv6MultipleCompression" ;
150
150
ZVAL_TRUE (& failure );
151
151
break ;
152
152
case LXB_URL_ERROR_TYPE_IPV6_INVALID_CODE_POINT :
153
- error_str = ZSTR_INIT_LITERAL ( "Ipv6InvalidCodePoint" , false) ;
153
+ error_str = "Ipv6InvalidCodePoint" ;
154
154
ZVAL_TRUE (& failure );
155
155
break ;
156
156
case LXB_URL_ERROR_TYPE_IPV6_TOO_FEW_PIECES :
157
- error_str = ZSTR_INIT_LITERAL ( "Ipv6TooFewPieces" , false) ;
157
+ error_str = "Ipv6TooFewPieces" ;
158
158
ZVAL_TRUE (& failure );
159
159
break ;
160
160
case LXB_URL_ERROR_TYPE_IPV4_IN_IPV6_TOO_MANY_PIECES :
161
- error_str = ZSTR_INIT_LITERAL ( "Ipv4InIpv6TooManyPieces" , false) ;
161
+ error_str = "Ipv4InIpv6TooManyPieces" ;
162
162
ZVAL_TRUE (& failure );
163
163
break ;
164
164
case LXB_URL_ERROR_TYPE_IPV4_IN_IPV6_INVALID_CODE_POINT :
165
- error_str = ZSTR_INIT_LITERAL ( "Ipv4InIpv6InvalidCodePoint" , false) ;
165
+ error_str = "Ipv4InIpv6InvalidCodePoint" ;
166
166
ZVAL_TRUE (& failure );
167
167
break ;
168
168
case LXB_URL_ERROR_TYPE_IPV4_IN_IPV6_OUT_OF_RANGE_PART :
169
- error_str = ZSTR_INIT_LITERAL ( "Ipv4InIpv6OutOfRangePart" , false) ;
169
+ error_str = "Ipv4InIpv6OutOfRangePart" ;
170
170
ZVAL_TRUE (& failure );
171
171
break ;
172
172
case LXB_URL_ERROR_TYPE_IPV4_IN_IPV6_TOO_FEW_PARTS :
173
- error_str = ZSTR_INIT_LITERAL ( "Ipv4InIpv6TooFewParts" , false) ;
173
+ error_str = "Ipv4InIpv6TooFewParts" ;
174
174
ZVAL_TRUE (& failure );
175
175
break ;
176
176
case LXB_URL_ERROR_TYPE_INVALID_URL_UNIT :
177
- error_str = ZSTR_INIT_LITERAL ( "InvalidUrlUnit" , false) ;
177
+ error_str = "InvalidUrlUnit" ;
178
178
ZVAL_FALSE (& failure );
179
179
break ;
180
180
case LXB_URL_ERROR_TYPE_SPECIAL_SCHEME_MISSING_FOLLOWING_SOLIDUS :
181
- error_str = ZSTR_INIT_LITERAL ( "SpecialSchemeMissingFollowingSolidus" , false) ;
181
+ error_str = "SpecialSchemeMissingFollowingSolidus" ;
182
182
ZVAL_FALSE (& failure );
183
183
break ;
184
184
case LXB_URL_ERROR_TYPE_MISSING_SCHEME_NON_RELATIVE_URL :
185
- error_str = ZSTR_INIT_LITERAL ( "MissingSchemeNonRelativeUrl" , false) ;
185
+ error_str = "MissingSchemeNonRelativeUrl" ;
186
186
ZVAL_TRUE (& failure );
187
187
break ;
188
188
case LXB_URL_ERROR_TYPE_INVALID_REVERSE_SOLIDUS :
189
- error_str = ZSTR_INIT_LITERAL ( "InvalidReverseSoldius" , false) ;
189
+ error_str = "InvalidReverseSoldius" ;
190
190
ZVAL_FALSE (& failure );
191
191
break ;
192
192
case LXB_URL_ERROR_TYPE_INVALID_CREDENTIALS :
193
- error_str = ZSTR_INIT_LITERAL ( "InvalidCredentials" , false) ;
193
+ error_str = "InvalidCredentials" ;
194
194
ZVAL_FALSE (& failure );
195
195
break ;
196
196
case LXB_URL_ERROR_TYPE_HOST_MISSING :
197
- error_str = ZSTR_INIT_LITERAL ( "HostMissing" , false) ;
197
+ error_str = "HostMissing" ;
198
198
ZVAL_TRUE (& failure );
199
199
break ;
200
200
case LXB_URL_ERROR_TYPE_PORT_OUT_OF_RANGE :
201
- error_str = ZSTR_INIT_LITERAL ( "PortOutOfRange" , false) ;
201
+ error_str = "PortOutOfRange" ;
202
202
ZVAL_TRUE (& failure );
203
203
break ;
204
204
case LXB_URL_ERROR_TYPE_PORT_INVALID :
205
- error_str = ZSTR_INIT_LITERAL ( "PortInvalid" , false) ;
205
+ error_str = "PortInvalid" ;
206
206
ZVAL_TRUE (& failure );
207
207
break ;
208
208
case LXB_URL_ERROR_TYPE_FILE_INVALID_WINDOWS_DRIVE_LETTER :
209
- error_str = ZSTR_INIT_LITERAL ( "FileInvalidWindowsDriveLetter" , false) ;
209
+ error_str = "FileInvalidWindowsDriveLetter" ;
210
210
ZVAL_FALSE (& failure );
211
211
break ;
212
212
case LXB_URL_ERROR_TYPE_FILE_INVALID_WINDOWS_DRIVE_LETTER_HOST :
213
- error_str = ZSTR_INIT_LITERAL ( "FileInvalidWindowsDriveLetterHost" , false) ;
213
+ error_str = "FileInvalidWindowsDriveLetterHost" ;
214
214
ZVAL_FALSE (& failure );
215
215
break ;
216
216
EMPTY_SWITCH_DEFAULT_CASE ()
217
217
}
218
218
219
219
zval error_type ;
220
- zend_enum_new (& error_type , uri_whatwg_url_validation_error_type_ce , error_str , NULL );
220
+ ZVAL_OBJ (& error_type , zend_enum_get_case_cstr ( uri_whatwg_url_validation_error_type_ce , error_str ) );
221
221
zend_update_property_ex (uri_whatwg_url_validation_error_ce , Z_OBJ (error ), ZSTR_KNOWN (ZEND_STR_TYPE ), & error_type );
222
- zend_string_release_ex (error_str , false);
223
- zval_ptr_dtor (& error_type );
224
222
225
223
zend_update_property (uri_whatwg_url_validation_error_ce , Z_OBJ (error ), ZEND_STRL ("failure" ), & failure );
226
224
@@ -236,14 +234,14 @@ static zend_string *fill_errors(zval *errors)
236
234
237
235
static void throw_invalid_url_exception_during_write (zval * errors , const char * component )
238
236
{
239
- zend_string * reason = fill_errors (errors );
237
+ const char * reason = fill_errors (errors );
240
238
zend_object * exception = zend_throw_exception_ex (
241
239
uri_whatwg_invalid_url_exception_ce ,
242
240
0 ,
243
241
"The specified %s is malformed%s%s%s" ,
244
242
component ,
245
243
reason ? " (" : "" ,
246
- reason ? ZSTR_VAL ( reason ) : "" ,
244
+ reason ? reason : "" ,
247
245
reason ? ")" : ""
248
246
);
249
247
zend_update_property (exception -> ce , exception , ZEND_STRL ("errors" ), errors );
@@ -567,10 +565,10 @@ lxb_url_t *lexbor_parse_uri_ex(const zend_string *uri_str, const lxb_url_t *lexb
567
565
lexbor_cleanup_parser ();
568
566
569
567
lxb_url_t * url = lxb_url_parse (& lexbor_parser , lexbor_base_url , (unsigned char * ) ZSTR_VAL (uri_str ), ZSTR_LEN (uri_str ));
570
- zend_string * reason = fill_errors (errors );
568
+ const char * reason = fill_errors (errors );
571
569
572
570
if (url == NULL && !silent ) {
573
- zend_object * exception = zend_throw_exception_ex (uri_whatwg_invalid_url_exception_ce , 0 , "The specified URI is malformed%s%s%s" , reason ? " (" : "" , reason ? ZSTR_VAL ( reason ) : "" , reason ? ")" : "" );
571
+ zend_object * exception = zend_throw_exception_ex (uri_whatwg_invalid_url_exception_ce , 0 , "The specified URI is malformed%s%s%s" , reason ? " (" : "" , reason ? reason : "" , reason ? ")" : "" );
574
572
zend_update_property (exception -> ce , exception , ZEND_STRL ("errors" ), errors );
575
573
}
576
574
0 commit comments