Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit e2f3074

Browse files
committed
uri: Simplify memory-management in php_uri_parse()
We can try parsing before allocating the `uri_internal_t` struct.
1 parent e6c6333 commit e2f3074

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

‎ext/uri/php_uri.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,15 +112,16 @@ PHPAPI const php_uri_parser *php_uri_get_parser(zend_string *uri_parser_name)
112112

113113
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)
114114
{
115-
uri_internal_t *internal_uri = emalloc(sizeof(*internal_uri));
116-
internal_uri->parser = uri_parser;
117-
internal_uri->uri = uri_parser->parse(uri_str, uri_str_len, NULL, NULL, silent);
115+
void *parsed = uri_parser->parse(uri_str, uri_str_len, NULL, NULL, silent);
118116

119-
if (UNEXPECTED(internal_uri->uri == NULL)) {
120-
efree(internal_uri);
117+
if (parsed == NULL) {
121118
return NULL;
122119
}
123120

121+
uri_internal_t *internal_uri = emalloc(sizeof(*internal_uri));
122+
internal_uri->parser = uri_parser;
123+
internal_uri->uri = parsed;
124+
124125
return internal_uri;
125126
}
126127

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /