From: William M. Brack Date: Tue, 27 Jul 2004 00:06:37 +0000 (+0000) Subject: fixed str:tokenize for case when 2nd argument is an empty string (should X-Git-Tag: v1.1.28~411 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=391aed81b51dbad8608773e4c1f65fd917beb917;p=platform%2Fupstream%2Flibxslt.git fixed str:tokenize for case when 2nd argument is an empty string (should * libexslt/strings.c: fixed str:tokenize for case when 2nd argument is an empty string (should produce a token for each char in the string). Reported on the mailing list by Peter Pawlowski. --- diff --git a/ChangeLog b/ChangeLog index 458e642..2b43575 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Mon Jul 26 17:03:22 PDT 2004 William Brack + + * libexslt/strings.c: fixed str:tokenize for case when 2nd + argument is an empty string (should produce a token for + each char in the string). Reported on the mailing list by + Peter Pawlowski. + Fri Jul 23 21:55:14 PDT 2004 William Brack * libxslt/imports.c: further enhancement for template priorities on imported stylesheets (better fix for bug 141279, fixes diff --git a/libexslt/strings.c b/libexslt/strings.c index 39c1a3e..6ad6d6c 100644 --- a/libexslt/strings.c +++ b/libexslt/strings.c @@ -77,7 +77,17 @@ exsltStrTokenizeFunction(xmlXPathParserContextPtr ctxt, int nargs) ret->boolval = 0; /* Freeing is not handled there anymore */ for (cur = str, token = str; *cur != 0; cur += clen) { clen = xmlUTF8Size(cur); - for (delimiter = delimiters; *delimiter != 0; + if (*delimiters == 0) { /* empty string case */ + xmlChar ctmp; + ctmp = *(cur+clen); + *(cur+clen) = 0; + node = xmlNewDocRawNode(container, NULL, + (const xmlChar *) "token", cur); + xmlAddChild((xmlNodePtr) container, node); + xmlXPathNodeSetAddUnique(ret->nodesetval, node); + *(cur+clen) = ctmp; /* restore the changed byte */ + token = cur + clen; + } else for (delimiter = delimiters; *delimiter != 0; delimiter += xmlUTF8Size(delimiter)) { if (!xmlUTF8Charcmp(cur, delimiter)) { if (cur == token) {