summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Joye <pierre.php@gmail.com>2014-05-13 08:08:25 +0200
committerPierre Joye <pierre.php@gmail.com>2014-05-13 08:08:25 +0200
commit1b89df4925d34b883013d3d857a6131457d39225 (patch)
treec4d81ed18861d14b47a554b70539c73b36e28130
parent11caa1d7b49a1fb13afef0967dee926b7db40837 (diff)
parent075a6ced0a3cd91014ab28272a120eca660e31fa (diff)
downloadphp-git-1b89df4925d34b883013d3d857a6131457d39225.tar.gz
Merge branch 'phpng' of git.php.net:php-src into phpng
# By Xinchen Hui # Via Xinchen Hui * 'phpng' of git.php.net:php-src: Save one type checking if the type is already string This should be removed too Remove zval **
-rw-r--r--Zend/zend_API.c4
-rw-r--r--Zend/zend_builtin_functions.c10
-rw-r--r--ext/standard/dns_win32.c108
3 files changed, 59 insertions, 63 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c
index 6ef4c0b467..f1e9614a22 100644
--- a/Zend/zend_API.c
+++ b/Zend/zend_API.c
@@ -480,12 +480,12 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons
}
/* break omitted intentionally */
- case IS_STRING:
case IS_LONG:
case IS_DOUBLE:
case IS_FALSE:
case IS_TRUE:
convert_to_string_ex(arg);
+ case IS_STRING:
if (UNEXPECTED(Z_ISREF_P(arg))) {
/* it's dangerous to return pointers to string
buffer of referenced variable, because it can
@@ -527,12 +527,12 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons
}
/* break omitted intentionally */
- case IS_STRING:
case IS_LONG:
case IS_DOUBLE:
case IS_FALSE:
case IS_TRUE:
convert_to_string_ex(arg);
+ case IS_STRING:
if (UNEXPECTED(Z_ISREF_P(arg))) {
/* it's dangerous to return pointers to string
buffer of referenced variable, because it can
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index bc998abc3c..d8b828763f 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -405,7 +405,6 @@ ZEND_FUNCTION(func_num_args)
}
/* }}} */
-
/* {{{ proto mixed func_get_arg(int arg_num)
Get the $arg_num'th argument that was passed to the function */
ZEND_FUNCTION(func_get_arg)
@@ -443,7 +442,6 @@ ZEND_FUNCTION(func_get_arg)
}
/* }}} */
-
/* {{{ proto array func_get_args()
Get an array of the arguments that were passed to the function */
ZEND_FUNCTION(func_get_args)
@@ -478,19 +476,17 @@ ZEND_FUNCTION(func_get_args)
}
/* }}} */
-
/* {{{ proto int strlen(string str)
Get string length */
ZEND_FUNCTION(strlen)
{
- char *s1;
- int s1_len;
+ zend_string *s;
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &s1, &s1_len) == FAILURE) {
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &s) == FAILURE) {
return;
}
- RETVAL_LONG(s1_len);
+ RETVAL_LONG(s->len);
}
/* }}} */
diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c
index 5d00b07af0..bf2100c1e8 100644
--- a/ext/standard/dns_win32.c
+++ b/ext/standard/dns_win32.c
@@ -138,7 +138,7 @@ PHP_FUNCTION(dns_check_record)
/* }}} */
/* {{{ php_parserr */
-static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw, zval **subarray)
+static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw, zval *subarray)
{
int type;
u_long ttl;
@@ -154,14 +154,15 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw,
return;
}
- ZVAL_NEW_ARR(*subarray);
- add_assoc_string(*subarray, "host", pRec->pName);
- add_assoc_string(*subarray, "class", "IN");
- add_assoc_long(*subarray, "ttl", ttl);
+ array_init(subarray);
+
+ add_assoc_string(subarray, "host", pRec->pName);
+ add_assoc_string(subarray, "class", "IN");
+ add_assoc_long(subarray, "ttl", ttl);
if (raw) {
- add_assoc_long(*subarray, "type", type);
- add_assoc_stringl(*subarray, "data", (char*) &pRec->Data, (uint) pRec->wDataLength);
+ add_assoc_long(subarray, "type", type);
+ add_assoc_stringl(subarray, "data", (char*) &pRec->Data, (uint) pRec->wDataLength);
return;
}
@@ -169,33 +170,33 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw,
case DNS_TYPE_A: {
IN_ADDR ipaddr;
ipaddr.S_un.S_addr = (pRec->Data.A.IpAddress);
- add_assoc_string(*subarray, "type", "A");
- add_assoc_string(*subarray, "ip", inet_ntoa(ipaddr));
+ add_assoc_string(subarray, "type", "A");
+ add_assoc_string(subarray, "ip", inet_ntoa(ipaddr));
break;
}
case DNS_TYPE_MX:
- add_assoc_string(*subarray, "type", "MX");
- add_assoc_long(*subarray, "pri", pRec->Data.Srv.wPriority);
+ add_assoc_string(subarray, "type", "MX");
+ add_assoc_long(subarray, "pri", pRec->Data.Srv.wPriority);
/* no break; */
case DNS_TYPE_CNAME:
if (type == DNS_TYPE_CNAME) {
- add_assoc_string(*subarray, "type", "CNAME");
+ add_assoc_string(subarray, "type", "CNAME");
}
/* no break; */
case DNS_TYPE_NS:
if (type == DNS_TYPE_NS) {
- add_assoc_string(*subarray, "type", "NS");
+ add_assoc_string(subarray, "type", "NS");
}
/* no break; */
case DNS_TYPE_PTR:
if (type == DNS_TYPE_PTR) {
- add_assoc_string(*subarray, "type", "PTR");
+ add_assoc_string(subarray, "type", "PTR");
}
- add_assoc_string(*subarray, "target", pRec->Data.MX.pNameExchange);
+ add_assoc_string(subarray, "target", pRec->Data.MX.pNameExchange);
break;
/* Not available on windows, the query is possible but there is no DNS_HINFO_DATA structure */
@@ -208,12 +209,12 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw,
zend_string *txt;
char *txt_dst;
long txt_len = 0;
- zval *entries;
+ zval entries;
- add_assoc_string(*subarray, "type", "TXT");
+ add_assoc_string(subarray, "type", "TXT");
+
+ array_init(entries);
- ZVAL_NEW_ARR(entries);
-
for (i = 0; i < count; i++) {
txt_len += strlen(data_txt->pStringArray[i]) + 1;
}
@@ -223,12 +224,12 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw,
for (i = 0; i < count; i++) {
int len = strlen(data_txt->pStringArray[i]);
memcpy(txt_dst, data_txt->pStringArray[i], len);
- add_next_index_stringl(entries, data_txt->pStringArray[i], len);
+ add_next_index_stringl(&entries, data_txt->pStringArray[i], len);
txt_dst += len;
}
- txt->len = txt_dst - txt->val;
- add_assoc_str(*subarray, "txt", txt);
- add_assoc_zval(*subarray, "entries", entries);
+ tct->len = txt_dst - txt->val;
+ add_assoc_str(subarray, "txt", txt);
+ add_assoc_zval(subarray, "entries", &entries);
}
break;
@@ -236,15 +237,15 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw,
{
DNS_SOA_DATA *data_soa = &pRec->Data.Soa;
- add_assoc_string(*subarray, "type", "SOA");
+ add_assoc_string(subarray, "type", "SOA");
- add_assoc_string(*subarray, "mname", data_soa->pNamePrimaryServer);
- add_assoc_string(*subarray, "rname", data_soa->pNameAdministrator);
- add_assoc_long(*subarray, "serial", data_soa->dwSerialNo);
- add_assoc_long(*subarray, "refresh", data_soa->dwRefresh);
- add_assoc_long(*subarray, "retry", data_soa->dwRetry);
- add_assoc_long(*subarray, "expire", data_soa->dwExpire);
- add_assoc_long(*subarray, "minimum-ttl", data_soa->dwDefaultTtl);
+ add_assoc_string(subarray, "mname", data_soa->pNamePrimaryServer);
+ add_assoc_string(subarray, "rname", data_soa->pNameAdministrator);
+ add_assoc_long(subarray, "serial", data_soa->dwSerialNo);
+ add_assoc_long(subarray, "refresh", data_soa->dwRefresh);
+ add_assoc_long(subarray, "retry", data_soa->dwRetry);
+ add_assoc_long(subarray, "expire", data_soa->dwExpire);
+ add_assoc_long(subarray, "minimum-ttl", data_soa->dwDefaultTtl);
}
break;
@@ -292,8 +293,8 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw,
}
tp[0] = '\0';
- add_assoc_string(*subarray, "type", "AAAA");
- add_assoc_string(*subarray, "ipv6", buf);
+ add_assoc_string(subarray, "type", "AAAA");
+ add_assoc_string(subarray, "ipv6", buf);
}
break;
@@ -307,11 +308,11 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw,
{
DNS_SRV_DATA *data_srv = &pRec->Data.Srv;
- add_assoc_string(*subarray, "type", "SRV");
- add_assoc_long(*subarray, "pri", data_srv->wPriority);
- add_assoc_long(*subarray, "weight", data_srv->wWeight);
- add_assoc_long(*subarray, "port", data_srv->wPort);
- add_assoc_string(*subarray, "target", data_srv->pNameTarget);
+ add_assoc_string(subarray, "type", "SRV");
+ add_assoc_long(subarray, "pri", data_srv->wPriority);
+ add_assoc_long(subarray, "weight", data_srv->wWeight);
+ add_assoc_long(subarray, "port", data_srv->wPort);
+ add_assoc_string(subarray, "target", data_srv->pNameTarget);
}
break;
@@ -320,21 +321,20 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, int raw,
{
DNS_NAPTR_DATA * data_naptr = &pRec->Data.Naptr;
- add_assoc_string(*subarray, "type", "NAPTR");
- add_assoc_long(*subarray, "order", data_naptr->wOrder);
- add_assoc_long(*subarray, "pref", data_naptr->wPreference);
- add_assoc_string(*subarray, "flags", data_naptr->pFlags);
- add_assoc_string(*subarray, "services", data_naptr->pService);
- add_assoc_string(*subarray, "regex", data_naptr->pRegularExpression);
- add_assoc_string(*subarray, "replacement", data_naptr->pReplacement);
+ add_assoc_string(subarray, "type", "NAPTR");
+ add_assoc_long(subarray, "order", data_naptr->wOrder);
+ add_assoc_long(subarray, "pref", data_naptr->wPreference);
+ add_assoc_string(subarray, "flags", data_naptr->pFlags);
+ add_assoc_string(subarray, "services", data_naptr->pService);
+ add_assoc_string(subarray, "regex", data_naptr->pRegularExpression);
+ add_assoc_string(subarray, "replacement", data_naptr->pReplacement);
}
break;
#endif
default:
/* unknown type */
- zval_ptr_dtor(subarray);
- *subarray = NULL;
+ ZVAL_UNDEF(subarray);
return;
}
@@ -464,20 +464,20 @@ PHP_FUNCTION(dns_get_record)
for (pRec = pResult; pRec; pRec = pRec->pNext) {
DNS_SRV_DATA *srv = &pRec->Data.Srv;
- zval *retval = NULL;
+ zval retval;
if (pRec->Flags.S.Section == DnsSectionAnswer) {
php_parserr(pRec, type_to_fetch, store_results, raw, &retval);
- if (retval != NULL && store_results) {
- add_next_index_zval(return_value, retval);
+ if (!Z_ISUNDEF(retval) && store_results) {
+ add_next_index_zval(return_value, &retval);
}
}
if (authns && pRec->Flags.S.Section == DnsSectionAuthority) {
php_parserr(pRec, type_to_fetch, 1, raw, &retval);
- if (retval != NULL) {
- add_next_index_zval(authns, retval);
+ if (!Z_ISUNDEF(retval)) {
+ add_next_index_zval(authns, &retval);
}
}
@@ -491,8 +491,8 @@ PHP_FUNCTION(dns_get_record)
#endif
if (addtl && pRec->Flags.S.Section == DnsSectionAdditional) {
php_parserr(pRec, type_to_fetch, 1, raw, &retval);
- if (retval != NULL) {
- add_next_index_zval(addtl, retval);
+ if (!Z_ISUNDEF(retval)) {
+ add_next_index_zval(addtl, &retval);
}
}
}