diff options
author | Pierre Joye <pierre.php@gmail.com> | 2014-05-13 08:08:25 +0200 |
---|---|---|
committer | Pierre Joye <pierre.php@gmail.com> | 2014-05-13 08:08:25 +0200 |
commit | 1b89df4925d34b883013d3d857a6131457d39225 (patch) | |
tree | c4d81ed18861d14b47a554b70539c73b36e28130 | |
parent | 11caa1d7b49a1fb13afef0967dee926b7db40837 (diff) | |
parent | 075a6ced0a3cd91014ab28272a120eca660e31fa (diff) | |
download | php-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.c | 4 | ||||
-rw-r--r-- | Zend/zend_builtin_functions.c | 10 | ||||
-rw-r--r-- | ext/standard/dns_win32.c | 108 |
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); } } } |