Hi Rasmus,

Will your patch support strings with special characters ('<', '>', '&')?

Thanks. Dmitry.

> -----Original Message-----
> From: Rasmus Lerdorf [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, June 15, 2006 10:04 PM
> To: php-cvs@lists.php.net
> Subject: [PHP-CVS] cvs: php-src /ext/soap php_encoding.c 
> 
> 
> rasmus                Thu Jun 15 18:03:31 2006 UTC
> 
>   Modified files:              
>     /php-src/ext/soap php_encoding.c 
>   Log:
>   I don't think the call to xmlNodeSetContentLen() is needed here and
>   it is causing performance problems because it tries to 
> parse the blob
>   and create a subtree.  Because we are escaping the string anyway, we
>   are never going to get a subtree, but the entity parsing 
> that is done
>   by xmlNodeSetContentLen() is killing performance on large blobs of 
>   text.  On one recent example it took a couple of minutes to parse 
>   whereas if we just create a text node like this and set the contents
>   to the raw string it is down to milliseconds.  As far as I can tell
>   all the tests pass with this patch.
>   
>   
> http://cvs.php.net/viewcvs.cgi/php-src/ext/soap/php_encoding.c
> ?r1=1.127&r2=1.128&diff_format=u
> Index: php-src/ext/soap/php_encoding.c
> diff -u php-src/ext/soap/php_encoding.c:1.127 
> php-src/ext/soap/php_encoding.c:1.128
> --- php-src/ext/soap/php_encoding.c:1.127     Fri May 26 09:04:53 2006
> +++ php-src/ext/soap/php_encoding.c   Thu Jun 15 18:03:30 2006
> @@ -17,7 +17,7 @@
>    |          Dmitry Stogov <[EMAIL PROTECTED]>                 
>             |
>    
> +-------------------------------------------------------------
> ---------+
>  */
> -/* $Id: php_encoding.c,v 1.127 2006/05/26 09:04:53 dmitry Exp $ */
> +/* $Id: php_encoding.c,v 1.128 2006/06/15 18:03:30 rasmus Exp $ */
>  
>  #include <time.h>
>  
> @@ -728,7 +728,7 @@
>  
>  static xmlNodePtr to_xml_string(encodeTypePtr type, zval 
> *data, int style, xmlNodePtr parent)  {
> -     xmlNodePtr ret;
> +     xmlNodePtr ret, text;
>       char *str;
>       int new_len;
>       TSRMLS_FETCH();
> @@ -738,13 +738,15 @@
>       FIND_ZVAL_NULL(data, ret, style);
>  
>       if (Z_TYPE_P(data) == IS_STRING) {
> -             str = 
> php_escape_html_entities(Z_STRVAL_P(data), Z_STRLEN_P(data), 
> &new_len, 0, 0, NULL TSRMLS_CC);
> +             str = estrndup(Z_STRVAL_P(data), Z_STRLEN_P(data));
> +             new_len = Z_STRLEN_P(data);
>       } else {
>               zval tmp = *data;
>  
>               zval_copy_ctor(&tmp);
>               convert_to_string(&tmp);
> -             str = php_escape_html_entities(Z_STRVAL(tmp), 
> Z_STRLEN(tmp), &new_len, 0, 0, NULL TSRMLS_CC);       
> +             str = estrndup(Z_STRVAL(tmp), Z_STRLEN(tmp));
> +             new_len = Z_STRLEN(tmp);
>               zval_dtor(&tmp);
>       }
>  
> @@ -766,7 +768,8 @@
>               soap_error1(E_ERROR,  "Encoding: string '%s' is 
> not a valid utf-8 string", str);
>       }
>  
> -     xmlNodeSetContentLen(ret, str, new_len);
> +     text = xmlNewTextLen(str, new_len);
> +     xmlAddChild(ret, text);
>       efree(str);
>  
>       if (style == SOAP_ENCODED) {
> 
> -- 
> PHP CVS Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
> 
> 
> 

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to