diff options
author | Felipe Pena <felipe@php.net> | 2009-01-11 18:47:17 +0000 |
---|---|---|
committer | Felipe Pena <felipe@php.net> | 2009-01-11 18:47:17 +0000 |
commit | cc50663b56a5094f9946e81f8a3827f2b046acdc (patch) | |
tree | 15d8ff5ab2b6b54a63057a80d582e0a6f7abd1e5 /ext/standard/dns_win32.c | |
parent | c87d6031e59a96e73b680365d55c0a4d44fbbc71 (diff) | |
download | php-git-cc50663b56a5094f9946e81f8a3827f2b046acdc.tar.gz |
MFH:
- Improved fix for #47035 (win32 part by Henrique M. Decaria)
[DOC] The TXT part needs be returned as an array of strings. (dns_get_record())
Diffstat (limited to 'ext/standard/dns_win32.c')
-rw-r--r-- | ext/standard/dns_win32.c | 23 |
1 files changed, 11 insertions, 12 deletions
diff --git a/ext/standard/dns_win32.c b/ext/standard/dns_win32.c index 07bd362cf2..33ad88da44 100644 --- a/ext/standard/dns_win32.c +++ b/ext/standard/dns_win32.c @@ -194,25 +194,24 @@ static void php_parserr(PDNS_RECORD pRec, int type_to_fetch, int store, zval **s int i = 0; DNS_TXT_DATA *data_txt = &pRec->Data.TXT; DWORD count = data_txt->dwStringCount; - char *txt, *txt_dst; + char *txt; long txt_len; + zval *txtarray; - add_assoc_string(*subarray, "type", "TXT", 1); + MAKE_STD_ZVAL(txtarray); + array_init(txtarray); - txt_len = 0; - for (i = 0; i < count; i++) { - txt_len += strlen(data_txt->pStringArray[i]) + 1; - } + add_assoc_string(*subarray, "type", "TXT", 1); - txt = ecalloc(txt_len * 2, 1); - txt_dst = txt; for (i = 0; i < count; i++) { - int len = strlen(data_txt->pStringArray[i]); - memcpy(txt_dst, data_txt->pStringArray[i], len); - txt_dst += len; + txt_len = strlen(data_txt->pStringArray[i]); + txt = emalloc(txt_len + 1); + memcpy(txt, data_txt->pStringArray[i], txt_len); + txt[txt_len] = '\0'; + add_next_index_stringl(txtarray, txt, txt_len, 0); } - add_assoc_string(*subarray, "txt", txt, 0); + add_assoc_zval(*subarray, "txt", txtarray); } break; |