Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(343)

Unified Diff: third_party/libxslt/libxslt/functions.c

Issue 6567001: Merge 75684 - Apply change for less verbose ID lengths from upstream.... (Closed) Base URL: svn://svn.chromium.org/chrome/branches/648/src/
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/libxslt/README.chromium ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/libxslt/libxslt/functions.c
===================================================================
--- third_party/libxslt/libxslt/functions.c (revision 75721)
+++ third_party/libxslt/libxslt/functions.c (working copy)
@@ -654,8 +654,9 @@
void
xsltGenerateIdFunction(xmlXPathParserContextPtr ctxt, int nargs){
xmlNodePtr cur = NULL;
- unsigned long val;
- xmlChar str[20];
+ long val;
+ xmlChar str[30];
+ xmlDocPtr doc;
if (nargs == 0) {
cur = ctxt->context->node;
@@ -694,9 +695,24 @@
* Okay this is ugly but should work, use the NodePtr address
* to forge the ID
*/
- val = (unsigned long)((char *)cur - (char *)0);
- val /= sizeof(xmlNode);
- sprintf((char *)str, "id%ld", val);
+ if (cur->type != XML_NAMESPACE_DECL)
+ doc = cur->doc;
+ else {
+ xmlNsPtr ns = (xmlNsPtr) cur;
+
+ if (ns->context != NULL)
+ doc = ns->context;
+ else
+ doc = ctxt->context->doc;
+
+ }
+
+ val = (long)((char *)cur - (char *)doc);
+ if (val >= 0) {
+ sprintf((char *)str, "idp%ld", val);
+ } else {
+ sprintf((char *)str, "idm%ld", -val);
+ }
valuePush(ctxt, xmlXPathNewString(str));
}
« no previous file with comments | « third_party/libxslt/README.chromium ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698