Skip to content

Commit 763cee6

Browse files
committed
Use zend_string for better performance
1 parent 2d9bc88 commit 763cee6

File tree

2 files changed

+16
-19
lines changed

2 files changed

+16
-19
lines changed

ext/curl/interface.c

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ static void _php_curl_close(zend_resource *rsrc TSRMLS_DC);
157157
#define CAAL(s, v) add_assoc_long_ex(return_value, s, sizeof(s) - 1, (long) v);
158158
#define CAAD(s, v) add_assoc_double_ex(return_value, s, sizeof(s) - 1, (double) v);
159159
#define CAAS(s, v) add_assoc_string_ex(return_value, s, sizeof(s) - 1, (char *) (v ? v : ""));
160+
#define CAASTR(s, v) add_assoc_str_ex(return_value, s, sizeof(s) - 1, v? v : "");
160161
#define CAAZ(s, v) add_assoc_zval_ex(return_value, s, sizeof(s) -1 , (zval *) v);
161162

162163
#if defined(PHP_WIN32) || defined(__GNUC__)
@@ -1587,12 +1588,11 @@ static int curl_debug(CURL *cp, curl_infotype type, char *buf, size_t buf_len, v
15871588
php_curl *ch = (php_curl *)ctx;
15881589

15891590
if (type == CURLINFO_HEADER_OUT) {
1590-
if (ch->header.str_len) {
1591-
efree(ch->header.str);
1591+
if (ch->header.str) {
1592+
STR_RELEASE(ch->header.str);
15921593
}
15931594
if (buf_len > 0) {
1594-
ch->header.str = estrndup(buf, buf_len);
1595-
ch->header.str_len = buf_len;
1595+
ch->header.str = STR_INIT(buf, buf_len, 0);
15961596
}
15971597
}
15981598

@@ -1722,12 +1722,10 @@ static php_curl *alloc_curl_handle()
17221722
ch->handlers->fnmatch = NULL;
17231723
#endif
17241724

1725-
ch->header.str_len = 0;
1726-
17271725
memset(&ch->err, 0, sizeof(struct _php_curl_error));
17281726

1729-
zend_llist_init(&ch->to_free->str, sizeof(char *), curl_free_string, 0);
1730-
zend_llist_init(&ch->to_free->post, sizeof(struct HttpPost), curl_free_post, 0);
1727+
zend_llist_init(&ch->to_free->str, sizeof(char *), (llist_dtor_func_t)curl_free_string, 0);
1728+
zend_llist_init(&ch->to_free->post, sizeof(struct HttpPost), (llist_dtor_func_t)curl_free_post, 0);
17311729
ch->safe_upload = 1; /* for now, for BC reason we allow unsafe API */
17321730

17331731
ch->to_free->slist = emalloc(sizeof(HashTable));
@@ -2814,9 +2812,9 @@ PHP_FUNCTION(curl_setopt_array)
28142812
void _php_curl_cleanup_handle(php_curl *ch)
28152813
{
28162814
smart_str_free(&ch->handlers->write->buf);
2817-
if (ch->header.str_len) {
2818-
efree(ch->header.str);
2819-
ch->header.str_len = 0;
2815+
if (ch->header.str) {
2816+
STR_RELEASE(ch->header.str);
2817+
ch->header.str = NULL;
28202818
}
28212819

28222820
memset(ch->err.str, 0, CURL_ERROR_SIZE + 1);
@@ -2998,14 +2996,14 @@ PHP_FUNCTION(curl_getinfo)
29982996
CAAL("local_port", l_code);
29992997
}
30002998
#endif
3001-
if (ch->header.str_len > 0) {
3002-
CAAS("request_header", ch->header.str);
2999+
if (ch->header.str) {
3000+
CAASTR("request_header", ch->header.str);
30033001
}
30043002
} else {
30053003
switch (option) {
30063004
case CURLINFO_HEADER_OUT:
3007-
if (ch->header.str_len > 0) {
3008-
RETURN_STRINGL(ch->header.str, ch->header.str_len);
3005+
if (ch->header.str) {
3006+
RETURN_STR(STR_COPY(ch->header.str));
30093007
} else {
30103008
RETURN_FALSE;
30113009
}
@@ -3187,8 +3185,8 @@ static void _php_curl_close_ex(php_curl *ch TSRMLS_DC)
31873185
zval_ptr_dtor(&ch->handlers->passwd);
31883186
#endif
31893187
zval_ptr_dtor(&ch->handlers->std_err);
3190-
if (ch->header.str_len > 0) {
3191-
efree(ch->header.str);
3188+
if (ch->header.str) {
3189+
STR_RELEASE(ch->header.str);
31923190
}
31933191

31943192
zval_ptr_dtor(&ch->handlers->write_header->stream);

ext/curl/php_curl.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,7 @@ struct _php_curl_error {
161161
};
162162

163163
struct _php_curl_send_headers {
164-
char *str;
165-
size_t str_len;
164+
zend_string *str;
166165
};
167166

168167
struct _php_curl_free {

0 commit comments

Comments
 (0)