diff --git a/ChangeLog b/ChangeLog
index a9b03c3c2cb01a580a2f5ce0fdff38f09aa23d7a_Q2hhbmdlTG9n..800f109c80ddbd73763ebdbed86e73e4240213d2_Q2hhbmdlTG9n 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Fri Sep 24 18:13:45 CEST 2004 Daniel Veillard <daniel@veillard.com>
+
+	* Makefile.am: add missing variable
+	* libxslt/transform.c: fixed some error callback data
+	* tests/exslt/date/Makefile.am tests/exslt/date/sum*: added new
+	  date:sum testing from Derek Poon
+
 Fri Sep 24 09:17:22 PDT 2004 William Brack <wbrack@mmm.com.hk>
 
 	* libexslt/date.c: fixed problem with empty sets, etc.
diff --git a/Makefile.am b/Makefile.am
index a9b03c3c2cb01a580a2f5ce0fdff38f09aa23d7a_TWFrZWZpbGUuYW0=..800f109c80ddbd73763ebdbed86e73e4240213d2_TWFrZWZpbGUuYW0= 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -16,6 +16,8 @@
 dist-hook: cleanup libxslt.spec
 	(cd $(srcdir) ; tar -cf - --exclude CVS win32 vms examples) | (cd $(distdir); tar xf -)
 
+CVS_EXTRA_DIST =
+
 EXTRA_DIST = xsltConf.sh.in xslt-config.in libxslt.spec libxslt.spec.in \
              FEATURES TODO Copyright libxslt.m4 \
 	     win32/libxslt/libxslt.def win32/libxslt/libxslt.dsw \
diff --git a/NEWS b/NEWS
index a9b03c3c2cb01a580a2f5ce0fdff38f09aa23d7a_TkVXUw==..800f109c80ddbd73763ebdbed86e73e4240213d2_TkVXUw== 100644
--- a/NEWS
+++ b/NEWS
@@ -10,5 +10,12 @@
 to the CVS at 
 http://cvs.gnome.org/viewcvs/libxslt/
  code base.Those are the public releases made:
+1.1.10: Aug 31 2004:
+   - build fix: NUL in c file blocking compilation on Solaris, Windows build
+    (Igor Zlatkovic)
+   - fix: key initialization problem (William Brack)
+   - documentation: fixed missing man page description for --path
+
+
 1.1.9: Aug 22 2004:
    - build fixes: missing tests (William Brack), Python dependancies, Python
@@ -13,6 +20,6 @@
 1.1.9: Aug 22 2004:
    - build fixes: missing tests (William Brack), Python dependancies, Python
-    on 64bits boxes, --with-crypto flag (Rob Richards), 
+    on 64bits boxes, --with-crypto flag (Rob Richards),
    - fixes: RVT key handling (William), Python binding (William and Sitsofe
     Wheeler), key and XPath troubles (William), template priority on imports
     (William), str:tokenize with empty strings (William), #default namespace
diff --git a/libxslt/transform.c b/libxslt/transform.c
index a9b03c3c2cb01a580a2f5ce0fdff38f09aa23d7a_bGlieHNsdC90cmFuc2Zvcm0uYw==..800f109c80ddbd73763ebdbed86e73e4240213d2_bGlieHNsdC90cmFuc2Zvcm0uYw== 100644
--- a/libxslt/transform.c
+++ b/libxslt/transform.c
@@ -1566,7 +1566,7 @@
                      */
                     ctxt->insert = insert;
                     if (!xsltApplyFallbacks(ctxt, node, cur)) {
-                        xsltGenericError(xsltGenericDebugContext,
+                        xsltGenericError(xsltGenericErrorContext,
                                          "xsltApplyOneTemplate: %s was not compiled\n",
                                          cur->name);
                     }
@@ -1601,7 +1601,7 @@
             } else if (IS_XSLT_NAME(cur, "message")) {
                 xsltMessage(ctxt, node, cur);
             } else {
-                xsltGenericError(xsltGenericDebugContext,
+                xsltGenericError(xsltGenericErrorContext,
                                  "xsltApplyOneTemplate: problem with xsl:%s\n",
                                  cur->name);
             }
@@ -3083,7 +3083,7 @@
 		    params = param;
 		}
 	    } else {
-		xsltGenericError(xsltGenericDebugContext,
+		xsltGenericError(xsltGenericErrorContext,
 		     "xsl:call-template: misplaced xsl:%s\n", cur->name);
 	    }
 	} else {
@@ -3087,7 +3087,7 @@
 		     "xsl:call-template: misplaced xsl:%s\n", cur->name);
 	    }
 	} else {
-	    xsltGenericError(xsltGenericDebugContext,
+	    xsltGenericError(xsltGenericErrorContext,
 		 "xsl:call-template: misplaced %s element\n", cur->name);
 	}
 	cur = cur->next;
@@ -3329,9 +3329,9 @@
 		}
 	    } else if (IS_XSLT_NAME(cur, "sort")) {
 		if (nbsorts >= XSLT_MAX_SORT) {
-		    xsltGenericError(xsltGenericDebugContext,
+		    xsltGenericError(xsltGenericErrorContext,
 			"xsl:apply-template: %s too many sort\n", node->name);
 		} else {
 		    sorts[nbsorts++] = cur;
 		}
 	    } else {
@@ -3333,9 +3333,9 @@
 			"xsl:apply-template: %s too many sort\n", node->name);
 		} else {
 		    sorts[nbsorts++] = cur;
 		}
 	    } else {
-		xsltGenericError(xsltGenericDebugContext,
+		xsltGenericError(xsltGenericErrorContext,
 		    "xsl:apply-template: misplaced xsl:%s\n", cur->name);
 	    }
         } else {
@@ -3339,7 +3339,7 @@
 		    "xsl:apply-template: misplaced xsl:%s\n", cur->name);
 	    }
         } else {
-            xsltGenericError(xsltGenericDebugContext,
+            xsltGenericError(xsltGenericErrorContext,
                  "xsl:apply-template: misplaced %s element\n", cur->name);
         }
         cur = cur->next;
@@ -3703,7 +3703,7 @@
     replacement = inst->children;
     while (IS_XSLT_ELEM(replacement) && (IS_XSLT_NAME(replacement, "sort"))) {
 	if (nbsorts >= XSLT_MAX_SORT) {
-	    xsltGenericError(xsltGenericDebugContext,
+	    xsltGenericError(xsltGenericErrorContext,
 		"xsl:for-each: too many sorts\n");
 	} else {
 	    sorts[nbsorts++] = replacement;
diff --git a/tests/exslt/date/Makefile.am b/tests/exslt/date/Makefile.am
index a9b03c3c2cb01a580a2f5ce0fdff38f09aa23d7a_dGVzdHMvZXhzbHQvZGF0ZS9NYWtlZmlsZS5hbQ==..800f109c80ddbd73763ebdbed86e73e4240213d2_dGVzdHMvZXhzbHQvZGF0ZS9NYWtlZmlsZS5hbQ== 100644
--- a/tests/exslt/date/Makefile.am
+++ b/tests/exslt/date/Makefile.am
@@ -25,6 +25,8 @@
 	add.2.out	add.2.xml	add.2.xsl	\
 	add-duration.1.out add-duration.1.xml add-duration.1.xsl \
 	add-duration.2.out add-duration.2.xml add-duration.2.xsl \
+	sum.1.out	sum.1.xml	sum.1.xsl	\
+	sum.2.out	sum.2.xml	sum.2.xsl	\
 	difference.1.out difference.1.xml difference.1.xsl	\
 	difference.2.out difference.2.xml difference.2.xsl	\
 	duration.1.out	duration.1.xml	duration.1.xsl	\
diff --git a/tests/exslt/date/sum.1.out b/tests/exslt/date/sum.1.out
new file mode 100644
index 0000000000000000000000000000000000000000..800f109c80ddbd73763ebdbed86e73e4240213d2_dGVzdHMvZXhzbHQvZGF0ZS9zdW0uMS5vdXQ=
--- /dev/null
+++ b/tests/exslt/date/sum.1.out
@@ -0,0 +1,21 @@
+
+sum    : PT1M + PT2M
+result : PT3M
+sum    : P1DT2H + PT3M + PT4S
+result : P1DT2H3M4S
+sum    : PT20M + PT20M + PT20M
+result : PT1H
+sum    : PT01S + PT02S + PT04S + PT8S + PT16S + PT32S
+result : PT1M3S
+sum    : P1M
+result : P1M
+sum    : PT70M
+result : PT1H10M
+sum    : PT70M + P13M
+result : P1Y1MT1H10M
+sum    : PT70M + -PT30M
+result : PT40M
+sum    : PT1H10M + -PT30M + -PT30S
+result : PT39M30S
+sum    : PT1M + -PT1M
+result : P0D
\ No newline at end of file
diff --git a/tests/exslt/date/sum.1.xml b/tests/exslt/date/sum.1.xml
new file mode 100644
index 0000000000000000000000000000000000000000..800f109c80ddbd73763ebdbed86e73e4240213d2_dGVzdHMvZXhzbHQvZGF0ZS9zdW0uMS54bWw=
--- /dev/null
+++ b/tests/exslt/date/sum.1.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<page>
+  <!-- valid date/times -->
+  <sum>
+    <date dur='PT1M'/>
+    <date dur='PT2M'/>
+  </sum>
+
+  <sum>
+    <date dur='P1DT2H'/>
+    <date dur='PT3M'/>
+    <date dur='PT4S'/>
+  </sum>
+
+  <sum>
+    <date dur='PT20M'/>
+    <date dur='PT20M'/>
+    <date dur='PT20M'/>
+  </sum>
+
+  <sum>
+    <date dur='PT01S'/>
+    <date dur='PT02S'/>
+    <date dur='PT04S'/>
+    <date dur='PT8S'/>
+    <date dur='PT16S'/>
+    <date dur='PT32S'/>
+  </sum>
+
+  <!-- Base case: sum of 1 node -->
+  <sum>
+    <date dur='P1M'/>
+  </sum>
+
+  <!-- Non-normalized input -->
+  <sum>
+    <date dur='PT70M'/>
+  </sum>
+
+  <sum>
+    <date dur='PT70M'/>
+    <date dur='P13M'/>
+  </sum>
+
+  <!-- Negative durations -->
+  <sum>
+    <date dur='PT70M'/>
+    <date dur='-PT30M'/>
+  </sum>
+
+  <sum>
+    <date dur='PT1H10M'/>
+    <date dur='-PT30M'/>
+    <date dur='-PT30S'/>
+  </sum>
+
+  <!-- Zero sum -->
+  <sum>
+    <date dur='PT1M'/>
+    <date dur='-PT1M'/>
+  </sum>
+
+</page>
diff --git a/tests/exslt/date/sum.1.xsl b/tests/exslt/date/sum.1.xsl
new file mode 100644
index 0000000000000000000000000000000000000000..800f109c80ddbd73763ebdbed86e73e4240213d2_dGVzdHMvZXhzbHQvZGF0ZS9zdW0uMS54c2w=
--- /dev/null
+++ b/tests/exslt/date/sum.1.xsl
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:date="http://exslt.org/dates-and-times"
+                extension-element-prefixes="date">
+
+<xsl:output method="text"/>
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="sum">
+sum    : <xsl:apply-templates select="date"/>
+result : <xsl:value-of select="date:sum(date/@dur)"/>
+</xsl:template>
+
+<xsl:template match="date">
+  <xsl:if test="position() != 1"> + </xsl:if>
+  <xsl:value-of select="@dur"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/tests/exslt/date/sum.2.err b/tests/exslt/date/sum.2.err
new file mode 100644
index 0000000000000000000000000000000000000000..800f109c80ddbd73763ebdbed86e73e4240213d2_dGVzdHMvZXhzbHQvZGF0ZS9zdW0uMi5lcnI=
--- /dev/null
+++ b/tests/exslt/date/sum.2.err
@@ -0,0 +1,22 @@
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+xmlXPathCompiledEval: evaluation failed
+runtime error: file ./sum.2.xsl line 12 element value-of
+xsltValueOf: text copy failed
+no result for ./sum.2.xml
diff --git a/tests/exslt/date/sum.2.out b/tests/exslt/date/sum.2.out
new file mode 100644
diff --git a/tests/exslt/date/sum.2.xml b/tests/exslt/date/sum.2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..800f109c80ddbd73763ebdbed86e73e4240213d2_dGVzdHMvZXhzbHQvZGF0ZS9zdW0uMi54bWw=
--- /dev/null
+++ b/tests/exslt/date/sum.2.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<page>
+  <!-- sum of empty node-set -->
+  <sum/>
+
+  <!-- According to http://exslt.org/date/functions/add-duration/
+       add-duration should fail when a sum involving negative durations
+       involve borrowing -->
+  <sum>
+    <date dur='P1M'/>
+    <date dur='-P1D'/>
+  </sum>
+
+  <sum>
+    <date dur='P1M'/>
+    <date dur='-P1D'/>
+    <date dur='P1D'/>
+  </sum>
+
+  <!-- ... but switching the order should make it work -->
+  <sum>
+    <date dur='P1M'/>
+    <date dur='P1D'/>
+    <date dur='-P1D'/>
+  </sum>
+
+  <!-- Empty durations -->
+  <sum>
+    <date dur=''/>
+  </sum>
+
+  <sum>
+    <date dur=''/>
+    <date dur='P45S'/>
+  </sum>
+
+  <!-- Invalid durations -->
+  <sum>
+    <date dur='2004-09-20'/>
+  </sum>
+
+  <sum>
+    <date dur='1H'/>
+  </sum>
+
+  <sum>
+    <date dur='2004-09-22'/>
+    <date dur='P1D'/>
+  </sum>
+
+  <sum>
+    <date dur='P2D'/>
+    <date dur='--P1D'/>
+  </sum>
+</page>
diff --git a/tests/exslt/date/sum.2.xsl b/tests/exslt/date/sum.2.xsl
new file mode 100644
index 0000000000000000000000000000000000000000..800f109c80ddbd73763ebdbed86e73e4240213d2_dGVzdHMvZXhzbHQvZGF0ZS9zdW0uMi54c2w=
--- /dev/null
+++ b/tests/exslt/date/sum.2.xsl
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0" 
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:date="http://exslt.org/dates-and-times"
+                extension-element-prefixes="date">
+
+<xsl:output method="text"/>
+<xsl:strip-space elements="*"/>
+
+<xsl:template match="sum">
+sum    : <xsl:apply-templates select="date"/>
+result : <xsl:value-of select="date:sum(date/@dur)"/>
+</xsl:template>
+
+<xsl:template match="date">
+  <xsl:if test="position() != 1"> + </xsl:if>
+  <xsl:value-of select="@dur"/>
+</xsl:template>
+
+</xsl:stylesheet>