rrichards Mon Oct 20 12:46:23 2008 UTC
Added files: (Branch: PHP_5_2)
/php-src/ext/dom/tests bug46335.phpt
Modified files:
/php-src/ext/dom text.c
Log:
MFH: fix bug #46335 (DOMText::splitText doesn't handle multibyte characters)
add test
http://cvs.php.net/viewvc.cgi/php-src/ext/dom/text.c?r1=1.23.2.1.2.7&r2=1.23.2.1.2.8&diff_format=u
Index: php-src/ext/dom/text.c
diff -u php-src/ext/dom/text.c:1.23.2.1.2.7 php-src/ext/dom/text.c:1.23.2.1.2.8
--- php-src/ext/dom/text.c:1.23.2.1.2.7 Wed Sep 10 15:40:34 2008
+++ php-src/ext/dom/text.c Mon Oct 20 12:46:23 2008
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: text.c,v 1.23.2.1.2.7 2008/09/10 15:40:34 rrichards Exp $ */
+/* $Id: text.c,v 1.23.2.1.2.8 2008/10/20 12:46:23 rrichards Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -172,19 +172,19 @@
if (cur == NULL) {
RETURN_FALSE;
}
- length = xmlStrlen(cur);
+ length = xmlUTF8Strlen(cur);
if (offset > length || offset < 0) {
xmlFree(cur);
RETURN_FALSE;
}
- first = xmlStrndup(cur, offset);
- second = xmlStrdup(cur + offset);
+ first = xmlUTF8Strndup(cur, offset);
+ second = xmlUTF8Strsub(cur, offset, length - offset);
xmlFree(cur);
- xmlNodeSetContentLen(node, first, offset);
+ xmlNodeSetContent(node, first);
nnode = xmlNewDocText(node->doc, second);
xmlFree(first);
http://cvs.php.net/viewvc.cgi/php-src/ext/dom/tests/bug46335.phpt?view=markup&rev=1.1
Index: php-src/ext/dom/tests/bug46335.phpt
+++ php-src/ext/dom/tests/bug46335.phpt
--TEST--
Bug #46335 (DOMText::splitText doesn't handle multibyte characters).
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
$textascii = 'This is an "example" of using DOM splitText';
$text = 'This is an âexampleâ of using DOM splitText';
$start = 30;
$length = 3;
$dom = new DOMDocument('1.0', 'UTF-8');
$node = $dom->createTextNode($textascii);
$dom->appendChild($node);
print "Text: $node->textContent\n";
$matched = $node->splitText($start);
$matched->splitText($length);
print "splitText (ASCII): $matched->textContent\n";
$node = $dom->createTextNode($text);
$dom->appendChild($node);
print "Text: $node->textContent\n";
$matched = $node->splitText($start);
$matched->splitText($length);
print "splitText (UTF-8): $matched->textContent\n";
?>
--EXPECT--
Text: This is an "example" of using DOM splitText
splitText (ASCII): DOM
Text: This is an âexampleâ of using DOM splitText
splitText (UTF-8): DOM
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php