working around Mark Vakoc' reported bug related to mode internaing adding
authorDaniel Veillard <veillard@src.gnome.org>
Tue, 29 Mar 2005 19:07:56 +0000 (19:07 +0000)
committerDaniel Veillard <veillard@src.gnome.org>
Tue, 29 Mar 2005 19:07:56 +0000 (19:07 +0000)
* libxslt/transform.c: working around Mark Vakoc' reported bug related
  to mode internaing
* xsltproc/xsltproc.c: adding a --nodict mode to check problems with
  document without a dictionnary.
* tests/REC/Makefile.am tests/general/Makefile.am: testing without
  dictionnary
Daniel

ChangeLog
libxslt/transform.c
tests/REC/Makefile.am
tests/general/Makefile.am
xsltproc/xsltproc.c

index 7c584d5..89fe109 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Tue Mar 29 21:06:11 CEST 2005 Daniel Veillard <daniel@veillard.com>
+
+       * libxslt/transform.c: working around Mark Vakoc' reported bug related
+         to mode internaing
+       * xsltproc/xsltproc.c: adding a --nodict mode to check problems with
+         document without a dictionnary.
+       * tests/REC/Makefile.am tests/general/Makefile.am: testing without 
+         dictionnary
+
 Tue Mar 29 15:37:13 CEST 2005 Daniel Veillard <daniel@veillard.com>
 
        * libxslt/xslt.c: fix bug #165201 when calling xsltInit() multiple
index ee46980..7e3f33a 100644 (file)
@@ -4053,6 +4053,16 @@ xsltApplyStylesheetInternal(xsltStylesheetPtr style, xmlDocPtr doc,
     else
         ctxt->outputFile = NULL;
 
+    /*
+     * internalize the modes if needed
+     */
+    if (ctxt->dict != NULL) {
+        if (ctxt->mode != NULL)
+           ctxt->mode = xmlDictLookup(ctxt->dict, ctxt->mode, -1);
+        if (ctxt->modeURI != NULL)
+           ctxt->modeURI = xmlDictLookup(ctxt->dict, ctxt->modeURI, -1);
+    }
+
     XSLT_GET_IMPORT_PTR(method, style, method)
         XSLT_GET_IMPORT_PTR(doctypePublic, style, doctypePublic)
         XSLT_GET_IMPORT_PTR(doctypeSystem, style, doctypeSystem)
index bc2c10a..1b42cbd 100644 (file)
@@ -142,4 +142,66 @@ test tests: $(top_builddir)/xsltproc/xsltproc
          fi ; \
          rm -f $$name.res $$name.bad ; \
          done)
+       @echo '## Running REC tests without dictionaries'
+       -@(for i in $(srcdir)/*.xsl ; do \
+         name=`basename $$i .xsl` ; \
+         if [ ! -f $(srcdir)/$$name.xml ] ; then \
+               continue ; \
+         fi ; \
+         log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nodict \
+               $(srcdir)/$$name.xsl $(srcdir)/$$name.xml \
+               > $$name.res 2>$$name.bad ; \
+         if [ ! -f $(srcdir)/$$name.out ] ; then \
+               cp $$name.res $(srcdir)/$$name.out ; \
+               if [ -s $$name.bad ] ; then \
+                       cp $$name.bad $(srcdir)/$$name.err ; \
+               fi ; \
+         else \
+               if  [ ! -s $$name.res ] ; then \
+                       echo "Fatal error, no $$name.res\n" ; \
+               else \
+                       diff $(srcdir)/$$name.out $$name.res ; \
+                       if [ -s $$name.err ] ; then \
+                               diff $(srcdir)/$$name.err $$name.bad ; \
+                       else \
+                               diff /dev/null $$name.bad ; \
+                       fi ; \
+               fi ; \
+         fi ; \
+         grep "MORY ALLO" .memdump  | \
+         grep -v "MEMORY ALLOCATED : 0" || true` ; \
+         if [ -n "$$log" ] ; then \
+               echo $$name result ; \
+               echo $$log ; \
+         fi ; \
+         rm -f $$name.res $$name.bad ; \
+         done)
+       @(for i in $(srcdir)/stand*.xml ; do \
+         name=`basename $$i .xml` ; \
+         log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nodict \
+               $(srcdir)/$$name.xml > $$name.res 2>$$name.bad ;\
+         if [ ! -f $(srcdir)/$$name.stand.out ] ; then \
+               cp $$name.res $(srcdir)/$$name.stand.out ; \
+               if [ -s $$name.bad ] ; then \
+                       cp $$name.bad $(srcdir)/$$name.stand.err ; \
+               fi ; \
+         else \
+               if  [ ! -s $$name.res ] ; then \
+                       echo "Fatal error, no $$name.res\n" ; \
+               else \
+                       diff $(srcdir)/$$name.stand.out $$name.res ; \
+                       if [ -s $$name.stand.err ] ; then \
+                               diff $(srcdir)/$$name.stand.err $$name.bad ; \
+                       else \
+                               diff /dev/null $$name.bad; \
+                       fi ; \
+               fi ; \
+         fi ; \
+         grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true` ; \
+         if [ -n "$$log" ] ; then \
+               echo $$name result ; \
+               echo $$log ; \
+         fi ; \
+         rm -f $$name.res $$name.bad ; \
+         done)
 
index 25747fb..785e511 100644 (file)
@@ -213,4 +213,36 @@ test tests: $(top_builddir)/xsltproc/xsltproc
          fi ; \
          rm -f result.$$name err.$$name; \
          done ; done)
+       @echo '## Running general tests without dictionaries'
+       -@(for i in $(srcdir)/../docs/*.xml ; do \
+         if [ -d $$i ] ; then continue ; fi ; \
+         doc=`basename $$i .xml` ; \
+         for j in $(srcdir)/$$doc*.xsl ; do \
+         if [ ! -f $$j ] ; then continue ; fi ; \
+         if [ -d $$j ] ; then continue ; fi ; \
+         name=`basename $$j .xsl`; \
+         out=$(srcdir)/"$$name".out; \
+         err=$(srcdir)/"$$name".err; \
+         log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nodict $$j $$i \
+               > result.$$name 2>err.$$name; \
+         if [ ! -f $$out ] ; then \
+               cp result.$$name $$out ; \
+               if [ -s err.$$name ] ; then \
+                       cp err.$$name $$err ; \
+               fi ; \
+         else \
+               diff $$out result.$$name; \
+               if [ -s $$err ] ; then \
+                       diff $$err err.$$name; \
+               else \
+                       diff /dev/null err.$$name; \
+               fi ; \
+         fi ; \
+         grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0" || true`;\
+         if [ -n "$$log" ] ; then \
+               echo $$name result ; \
+               echo $$log ; \
+         fi ; \
+         rm -f result.$$name err.$$name; \
+         done ; done)
 
index b53b5e2..244826f 100644 (file)
@@ -82,6 +82,7 @@ static int dumpextensions = 0;
 static int novalid = 0;
 static int nodtdattr = 0;
 static int noout = 0;
+static int nodict = 0;
 #ifdef LIBXML_HTML_ENABLED
 static int html = 0;
 #endif
@@ -604,6 +605,9 @@ main(int argc, char **argv)
         } else if ((!strcmp(argv[i], "-profile")) ||
                    (!strcmp(argv[i], "--profile"))) {
             profile++;
+        } else if ((!strcmp(argv[i], "-nodict")) ||
+                   (!strcmp(argv[i], "--nodict"))) {
+            nodict++;
         } else if ((!strcmp(argv[i], "-norman")) ||
                    (!strcmp(argv[i], "--norman"))) {
             profile++;
@@ -725,6 +729,8 @@ main(int argc, char **argv)
        options = XML_PARSE_NOENT | XML_PARSE_NOCDATA;
     else if (nodtdattr)
         options = XML_PARSE_NOENT | XML_PARSE_DTDLOAD | XML_PARSE_NOCDATA;
+    if (nodict != 0)
+        options |= XML_PARSE_NODICT;
 
     /*
      * Register the EXSLT extensions and the test module