[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xml xml.c
rasmus Wed Jan 30 08:50:02 2008 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/xmlxml.c Log: Copy-paste typo http://cvs.php.net/viewvc.cgi/php-src/ext/xml/xml.c?r1=1.157.2.4.2.7&r2=1.157.2.4.2.8&diff_format=u Index: php-src/ext/xml/xml.c diff -u php-src/ext/xml/xml.c:1.157.2.4.2.7 php-src/ext/xml/xml.c:1.157.2.4.2.8 --- php-src/ext/xml/xml.c:1.157.2.4.2.7 Tue Jan 29 23:21:20 2008 +++ php-src/ext/xml/xml.c Wed Jan 30 08:50:02 2008 @@ -18,7 +18,7 @@ +--+ */ -/* $Id: xml.c,v 1.157.2.4.2.7 2008/01/29 23:21:20 rasmus Exp $ */ +/* $Id: xml.c,v 1.157.2.4.2.8 2008/01/30 08:50:02 rasmus Exp $ */ #define IS_EXT_MODULE @@ -595,7 +595,7 @@ s += 3; pos -= 3; } else if (c >= 0xc0) { /* two bytes encoded, 11 bits */ - if(pos-3 >= 0) { + if(pos-2 >= 0) { c = ((s[0]&63)<<6) | (s[1]&63); } else { c = '?'; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xml xml.c /ext/xml/tests bug43957.phpt
rasmus Tue Jan 29 23:21:20 2008 UTC Added files: (Branch: PHP_5_2) /php-src/ext/xml/tests bug43957.phpt Modified files: /php-src/ext/xmlxml.c Log: Fixed bug #43957 (utf8_decode() bogus conversion of partial multibyte UTF8 char) http://cvs.php.net/viewvc.cgi/php-src/ext/xml/xml.c?r1=1.157.2.4.2.6&r2=1.157.2.4.2.7&diff_format=u Index: php-src/ext/xml/xml.c diff -u php-src/ext/xml/xml.c:1.157.2.4.2.6 php-src/ext/xml/xml.c:1.157.2.4.2.7 --- php-src/ext/xml/xml.c:1.157.2.4.2.6 Mon Dec 31 07:20:14 2007 +++ php-src/ext/xml/xml.c Tue Jan 29 23:21:20 2008 @@ -18,7 +18,7 @@ +--+ */ -/* $Id: xml.c,v 1.157.2.4.2.6 2007/12/31 07:20:14 sebastian Exp $ */ +/* $Id: xml.c,v 1.157.2.4.2.7 2008/01/29 23:21:20 rasmus Exp $ */ #define IS_EXT_MODULE @@ -579,15 +579,27 @@ while (pos > 0) { c = (unsigned char)(*s); if (c >= 0xf0) { /* four bytes encoded, 21 bits */ - c = ((s[0]&7)<<18) | ((s[1]&63)<<12) | ((s[2]&63)<<6) | (s[3]&63); + if(pos-4 >= 0) { + c = ((s[0]&7)<<18) | ((s[1]&63)<<12) | ((s[2]&63)<<6) | (s[3]&63); + } else { + c = '?'; + } s += 4; pos -= 4; } else if (c >= 0xe0) { /* three bytes encoded, 16 bits */ - c = ((s[0]&63)<<12) | ((s[1]&63)<<6) | (s[2]&63); + if(pos-3 >= 0) { + c = ((s[0]&63)<<12) | ((s[1]&63)<<6) | (s[2]&63); + } else { + c = '?'; + } s += 3; pos -= 3; } else if (c >= 0xc0) { /* two bytes encoded, 11 bits */ - c = ((s[0]&63)<<6) | (s[1]&63); + if(pos-3 >= 0) { + c = ((s[0]&63)<<6) | (s[1]&63); + } else { + c = '?'; + } s += 2; pos -= 2; } else { http://cvs.php.net/viewvc.cgi/php-src/ext/xml/tests/bug43957.phpt?view=markup&rev=1.1 Index: php-src/ext/xml/tests/bug43957.phpt +++ php-src/ext/xml/tests/bug43957.phpt -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xml xml.c
tony2001Tue Dec 26 12:29:42 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/xmlxml.c Log: MFH http://cvs.php.net/viewvc.cgi/php-src/ext/xml/xml.c?r1=1.157.2.4.2.3&r2=1.157.2.4.2.4&diff_format=u Index: php-src/ext/xml/xml.c diff -u php-src/ext/xml/xml.c:1.157.2.4.2.3 php-src/ext/xml/xml.c:1.157.2.4.2.4 --- php-src/ext/xml/xml.c:1.157.2.4.2.3 Tue Aug 15 22:47:10 2006 +++ php-src/ext/xml/xml.c Tue Dec 26 12:29:42 2006 @@ -18,7 +18,7 @@ +--+ */ -/* $Id: xml.c,v 1.157.2.4.2.3 2006/08/15 22:47:10 rrichards Exp $ */ +/* $Id: xml.c,v 1.157.2.4.2.4 2006/12/26 12:29:42 tony2001 Exp $ */ #define IS_EXT_MODULE @@ -1097,7 +1097,7 @@ ns_param = ":"; } - parser = ecalloc(sizeof(xml_parser), 1); + parser = ecalloc(1, sizeof(xml_parser)); parser->parser = XML_ParserCreate_MM((auto_detect ? NULL : encoding), &php_xml_mem_hdlrs, ns_param); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP-CVS] cvs: php-src(PHP_5_2) /ext/xml xml.c /ext/xml/tests xml011.phpt
rrichards Tue Aug 15 22:47:11 2006 UTC Added files: (Branch: PHP_5_2) /php-src/ext/xml/tests xml011.phpt Modified files: /php-src/ext/xmlxml.c Log: fix bug #38454 (warning upon disabling handler via xml_set_element_handler) fix bug #38427 (unicode causes xml_parser to misbehave) add test http://cvs.php.net/viewvc.cgi/php-src/ext/xml/xml.c?r1=1.157.2.4.2.2&r2=1.157.2.4.2.3&diff_format=u Index: php-src/ext/xml/xml.c diff -u php-src/ext/xml/xml.c:1.157.2.4.2.2 php-src/ext/xml/xml.c:1.157.2.4.2.3 --- php-src/ext/xml/xml.c:1.157.2.4.2.2 Wed Aug 2 15:21:54 2006 +++ php-src/ext/xml/xml.c Tue Aug 15 22:47:10 2006 @@ -18,7 +18,7 @@ +--+ */ -/* $Id: xml.c,v 1.157.2.4.2.2 2006/08/02 15:21:54 iliaa Exp $ */ +/* $Id: xml.c,v 1.157.2.4.2.3 2006/08/15 22:47:10 rrichards Exp $ */ #define IS_EXT_MODULE @@ -380,7 +380,12 @@ /* IS_ARRAY might indicate that we're using array($obj, 'method') syntax */ if (Z_TYPE_PP(data) != IS_ARRAY) { + convert_to_string_ex(data); + if (Z_STRLEN_PP(data) == 0) { + *handler = NULL; + return; + } } zval_add_ref(data); @@ -857,6 +862,25 @@ } else { zval *tag; + zval **curtag, **mytype, **myval; + HashPosition hpos=NULL; + + zend_hash_internal_pointer_end_ex(Z_ARRVAL_P(parser->data), &hpos); + + if (hpos && (zend_hash_get_current_data_ex(Z_ARRVAL_P(parser->data), (void **) &curtag, &hpos) == SUCCESS)) { + if (zend_hash_find(Z_ARRVAL_PP(curtag),"type",sizeof("type"),(void **) &mytype) == SUCCESS) { + if (!strcmp(Z_STRVAL_PP(mytype), "cdata")) { + if (zend_hash_find(Z_ARRVAL_PP(curtag),"value",sizeof("value"),(void **) &myval) == SUCCESS) { + int newlen = Z_STRLEN_PP(myval) + decoded_len; + Z_STRVAL_PP(myval) = erealloc(Z_STRVAL_PP(myval),newlen+1); + strcpy(Z_STRVAL_PP(myval) + Z_STRLEN_PP(myval),decoded_value); + Z_STRLEN_PP(myval) += decoded_len; + efree(decoded_value); + return; + } + } + } + } MAKE_STD_ZVAL(tag); http://cvs.php.net/viewvc.cgi/php-src/ext/xml/tests/xml011.phpt?view=markup&rev=1.1 Index: php-src/ext/xml/tests/xml011.phpt +++ php-src/ext/xml/tests/xml011.phpt --TEST-- XML Parser test: concat character data and set empty handlers --SKIPIF-- --FILE-- "; } function end_elem() { echo ""; } $xml = 'start This & that'; $parser = xml_parser_create(); xml_parse_into_struct($parser, $xml, $vals, $index); print_r($vals); xml_parser_free($parser); echo "\nChange to empty end handler\n"; $parser = xml_parser_create(); xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0); xml_set_element_handler($parser,'start_elem','end_elem'); xml_set_element_handler($parser,'start_elem',NULL); xml_parse($parser, $xml, TRUE); xml_parser_free($parser); echo "\nDone\n"; ?> --EXPECT-- Array ( [0] => Array ( [tag] => TEXT [type] => open [level] => 1 [value] => start ) [1] => Array ( [tag] => B [type] => complete [level] => 2 ) [2] => Array ( [tag] => TEXT [value] => This & that [type] => cdata [level] => 1 ) [3] => Array ( [tag] => TEXT [type] => close [level] => 1 ) ) Change to empty end handler Done -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php