[xml] Problem with xsltParseStylesheetImportedDoc /	xsltGatherNamespaces
- From: "Christopher R. Palmer" <crpalmer vivisimo com>
- To: xml gnome org
- Subject: [xml] Problem with xsltParseStylesheetImportedDoc /	xsltGatherNamespaces
- Date: Mon, 28 Aug 2006 10:44:16 -0400
Hi,
I just upgraded to libxslt-1.1.17 and found what appears to be a bug in the 
the stylesheet creation.  In version 1.1.15, the code in 
xsltParseStylesheetImportedDoc was:
    ...
    ret->doc = doc;
    ret->parent = style;        /* needed to prevent loops */
    xsltGatherNamespaces(ret);
    ...
and the current code (removing the ifdefs) is:
    retStyle->parent = parentStyle;
    ...
    xsltGatherNamespaces(retStyle);
    retStyle->doc = doc;
In xsltGatherNamespaces, it collects all the namespaces from the ->doc 
which it can no longer do because the doc has not been set before calling it.
The attached patch fixes the problem by setting the doc before calling the 
gather function.  I included an #ifndef on the assumption that it should 
not be set in the new refactoring code (but that was just a guess).
Cheers,
Chris.
--
Christopher R. Palmer                     palmer vivisimo com
Chief Technology Officer                  www.vivisimo.com
Vivisimo, Inc.                            412-422-2499 ext. 118
diff --unified -r orig/libxslt-1.1.17/libxslt/xslt.c libxslt-1.1.17/libxslt/xslt.c
Index: libxslt-1.1.17/libxslt/xslt.c
--- orig/libxslt-1.1.17/libxslt/xslt.c  2006-06-01 08:29:11.000000000 -0400
+++ libxslt-1.1.17/libxslt/xslt.c       2006-08-28 10:17:14.000000000 -0400
@@ -6207,6 +6207,11 @@
     * TODO: Eliminate xsltGatherNamespaces(); we must not restrict
     *  the stylesheet to containt distinct namespace prefixes.
     */
+
+#ifndef XSLT_REFACTORED
+    retStyle->doc = doc;
+#endif
+
     xsltGatherNamespaces(retStyle);
 
 #ifdef XSLT_REFACTORED
@@ -6321,7 +6326,6 @@
     /*
     * Old behaviour.
     */
-    retStyle->doc = doc;
     xsltParseStylesheetProcess(retStyle, doc);
     if (retStyle != NULL) {
        if (retStyle->errors != 0) {
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]