summaryrefslogtreecommitdiff
path: root/ext/standard/dns_win32.c
diff options
context:
space:
mode:
authorFelipe Pena <felipe@php.net>2009-01-11 18:47:17 +0000
committerFelipe Pena <felipe@php.net>2009-01-11 18:47:17 +0000
commitcc50663b56a5094f9946e81f8a3827f2b046acdc (patch)
tree15d8ff5ab2b6b54a63057a80d582e0a6f7abd1e5 /ext/standard/dns_win32.c
parentc87d6031e59a96e73b680365d55c0a4d44fbbc71 (diff)
downloadphp-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.c23
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;