Em Dom, 2009-01-11 às 18:47 +0000, Felipe Pena escreveu:
> felipe                Sun Jan 11 18:47:17 2009 UTC
> 
>   Modified files:              (Branch: PHP_5_3)
>     /php-src/ext/standard     dns.c dns_win32.c 
>   Log:
>   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())
>   
>   
Sorry, but ignores this [DOC]. NO BC! :þ

> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/dns.c?r1=1.70.2.7.2.5.2.17&r2=1.70.2.7.2.5.2.18&diff_format=u
> Index: php-src/ext/standard/dns.c
> diff -u php-src/ext/standard/dns.c:1.70.2.7.2.5.2.17 
> php-src/ext/standard/dns.c:1.70.2.7.2.5.2.18
> --- php-src/ext/standard/dns.c:1.70.2.7.2.5.2.17      Thu Jan  8 17:19:50 2009
> +++ php-src/ext/standard/dns.c        Sun Jan 11 18:47:17 2009
> @@ -18,7 +18,7 @@
>     +----------------------------------------------------------------------+
>   */
>  
> -/* $Id: dns.c,v 1.70.2.7.2.5.2.17 2009/01/08 17:19:50 felipe Exp $ */
> +/* $Id: dns.c,v 1.70.2.7.2.5.2.18 2009/01/11 18:47:17 felipe Exp $ */
>  
>  /* {{{ includes */
>  #include "php.h"
> @@ -456,20 +456,29 @@
>                       break;
>               case DNS_T_TXT:
>                       {
> +                             zval *txtarray = NULL;
>                               int ll = 0;
> +                             char *txt = NULL;
>  
>                               add_assoc_string(*subarray, "type", "TXT", 1);
>                               tp = emalloc(dlen + 1);
>                               
> +                             MAKE_STD_ZVAL(txtarray);
> +                             array_init(txtarray);
> +                             
>                               while (ll < dlen) {
> +                                     txt = tp + ll;
>                                       n = cp[ll];
> -                                     memcpy(tp + ll , cp + ll + 1, n);
> +                                     memcpy(txt, cp + ll + 1, n);
>                                       ll = ll + n + 1;
> +                                     tp[ll] = '\0';
> +                                     add_next_index_stringl(txtarray, txt, 
> n, 1);    
>                               }
> -                             tp[dlen] = '\0';
> +
>                               cp += dlen;
>  
> -                             add_assoc_stringl(*subarray, "txt", tp, dlen - 
> 1, 0);
> +                             add_assoc_zval(*subarray, "txt", txtarray);
> +                             efree(tp);
>                       }
>                       break;
>               case DNS_T_SOA:
> http://cvs.php.net/viewvc.cgi/php-src/ext/standard/dns_win32.c?r1=1.1.2.4&r2=1.1.2.5&diff_format=u
> Index: php-src/ext/standard/dns_win32.c
> diff -u php-src/ext/standard/dns_win32.c:1.1.2.4 
> php-src/ext/standard/dns_win32.c:1.1.2.5
> --- php-src/ext/standard/dns_win32.c:1.1.2.4  Wed Jan  7 01:35:36 2009
> +++ php-src/ext/standard/dns_win32.c  Sun Jan 11 18:47:17 2009
> @@ -194,25 +194,24 @@
>                               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;
>  
> 
> 
> 
-- 
Regards,
Felipe Pena

Reply via email to