From d204e66735cb701e5b76e1489353faa48cfc6016 Mon Sep 17 00:00:00 2001 From: Stewart Brodie Date: Wed, 21 Nov 2012 11:11:46 +0800 Subject: [PATCH] Fix generate-id() to avoid generating the same ID For nodes from different documents, especially for the document node itself which would always get "idp0" as a result. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=688171 --- libxslt/functions.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libxslt/functions.c b/libxslt/functions.c index c754994..dc61994 100644 --- a/libxslt/functions.c +++ b/libxslt/functions.c @@ -660,6 +660,7 @@ xsltFormatNumberFunction(xmlXPathParserContextPtr ctxt, int nargs) */ void xsltGenerateIdFunction(xmlXPathParserContextPtr ctxt, int nargs){ + static char base_address; xmlNodePtr cur = NULL; xmlXPathObjectPtr obj = NULL; long val; @@ -716,7 +717,7 @@ xsltGenerateIdFunction(xmlXPathParserContextPtr ctxt, int nargs){ if (obj) xmlXPathFreeObject(obj); - val = (long)((char *)cur - (char *)doc); + val = (long)((char *)cur - (char *)&base_address); if (val >= 0) { sprintf((char *)str, "idp%ld", val); } else { -- 2.7.4