[libxslt] Fix generate-id() to avoid generating the same ID



commit d204e66735cb701e5b76e1489353faa48cfc6016
Author: Stewart Brodie <stewart eh org>
Date:   Wed Nov 21 11:11:46 2012 +0800

    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 files changed, 2 insertions(+), 1 deletions(-)
---
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 {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]