Hello Dmitry,

  that's missing a few lines:

                } else if ((c & 0xfc) == 0xf8) {
                        if ((s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80 || 
(s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80) {
                                return 0;
                        }
                } else if ((c & 0xfe) == 0xfc) {
                        if ((s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80 || 
(s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80) {
                                return 0;
                        }

regards
marcus


Tuesday, September 7, 2004, 4:34:46 PM, you wrote:

> dmitry                Tue Sep  7 10:34:46 2004 EDT

>   Modified files:              
>     /php-src/ext/soap php_encoding.c 
>   Log:
>   Make ext/soap work around libxml2 bug in xmlCheckUTF8 (2.6.7-2.6.13)
  
  
> http://cvs.php.net/diff.php/php-src/ext/soap/php_encoding.c?r1=1.74&r2=1.75&ty=u
> Index: php-src/ext/soap/php_encoding.c
> diff -u php-src/ext/soap/php_encoding.c:1.74
> php-src/ext/soap/php_encoding.c:1.75
> --- php-src/ext/soap/php_encoding.c:1.74      Thu Aug 26 14:40:10 2004
> +++ php-src/ext/soap/php_encoding.c   Tue Sep  7 10:34:46 2004
> @@ -17,7 +17,7 @@
>    |          Dmitry Stogov <[EMAIL PROTECTED]>                          
>   
> +----------------------------------------------------------------------+
>  */
> -/* $Id: php_encoding.c,v 1.74 2004/08/26 18:40:10 dmitry Exp $ */
> +/* $Id: php_encoding.c,v 1.75 2004/09/07 14:34:46 dmitry Exp $ */
 
>  #include <time.h>
 
> @@ -581,6 +581,32 @@
>       return ret;
>  }
 
> +static int php_soap_xmlCheckUTF8(const unsigned char *s)
> +{
> +     int i;
> +     unsigned char c;
> +
> +     for (i = 0; (c = s[i++]);) {
> +             if ((c & 0x80) == 0) {
> +             } else if ((c & 0xe0) == 0xc0) {
> +                     if ((s[i++] & 0xc0) != 0x80) {
> +                             return 0;
> +                     }
> +             } else if ((c & 0xf0) == 0xe0) {
> +                     if ((s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80) {
> +                             return 0;
> +                     }
> +             } else if ((c & 0xf8) == 0xf0) {
> +                     if ((s[i++] & 0xc0) != 0x80 || (s[i++] & 0xc0) != 0x80 || 
> (s[i++] & 0xc0) != 0x80) {
> +                             return 0;
> +                     }
> +             } else {
> +                     return 0;
> +             }
> +     }
> +     return 1;
> +}
> +
>  static xmlNodePtr to_xml_string(encodeTypePtr type, zval *data, int style, 
> xmlNodePtr parent)
>  {
>       xmlNodePtr ret;
> @@ -612,12 +638,12 @@
>                       efree(str);
>                       str = estrdup(xmlBufferContent(out));
>                       new_len = n;
> -             } else if (!xmlCheckUTF8(str)) {
> +             } else if (!php_soap_xmlCheckUTF8(str)) {
>                       soap_error1(E_ERROR,  "Encoding: string '%s' is not a valid 
> utf-8 string", str);
>               }
>               xmlBufferFree(out);
>               xmlBufferFree(in);
> -     } else if (!xmlCheckUTF8(str)) {
> +     } else if (!php_soap_xmlCheckUTF8(str)) {
>               soap_error1(E_ERROR,  "Encoding: string '%s' is not a valid utf-8 
> string", str);
>       }
 




-- 
Best regards,
 Marcus                            mailto:[EMAIL PROTECTED]

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

Reply via email to