summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormoney_seshu Dronamraju <mcseshu@gmail.com>2011-03-07 12:12:11 +0800
committerDaniel Veillard <veillard@redhat.com>2011-03-07 12:12:11 +0800
commit4e9909066731067d8e256ca25d8d54944105bc5e (patch)
tree465bd24ef2c1f846c471cdae46613f8dd019ca5d
parent7f741527832f4d85472c61f0468c1358f84810d7 (diff)
downloadlibxslt-4e9909066731067d8e256ca25d8d54944105bc5e.tar.gz
Fix a problem with ESXLT date:add() with January
Also adds a regression test provided by Michael Ludwig <milu71@gmx.de>
-rw-r--r--libexslt/date.c2
-rw-r--r--tests/docs/date_add.xml1
-rw-r--r--tests/general/Makefile.am2
-rw-r--r--tests/general/date_add.out9
-rw-r--r--tests/general/date_add.xsl16
5 files changed, 28 insertions, 2 deletions
diff --git a/libexslt/date.c b/libexslt/date.c
index cefbdd83..05b11ed3 100644
--- a/libexslt/date.c
+++ b/libexslt/date.c
@@ -1577,7 +1577,7 @@ _exsltDateAdd (exsltDateValPtr dt, exsltDateValPtr dur)
if ((r->hour) || (r->min) || (r->sec))
ret->type = XS_DATETIME;
else if (ret->type != XS_DATE) {
- if ((r->mon != 1) && (r->day != 1))
+ if (r->day != 1)
ret->type = XS_DATE;
else if ((ret->type != XS_GYEARMONTH) && (r->mon != 1))
ret->type = XS_GYEARMONTH;
diff --git a/tests/docs/date_add.xml b/tests/docs/date_add.xml
new file mode 100644
index 00000000..69d62f2c
--- /dev/null
+++ b/tests/docs/date_add.xml
@@ -0,0 +1 @@
+<doc/>
diff --git a/tests/general/Makefile.am b/tests/general/Makefile.am
index 7207e15f..8f32fe7f 100644
--- a/tests/general/Makefile.am
+++ b/tests/general/Makefile.am
@@ -182,7 +182,7 @@ EXTRA_DIST = \
character.out character.xsl \
character2.out character2.xsl \
itemschoose.out itemschoose.xsl \
- inner.xsl
+ inner.xsl date_add.xsl
all:
diff --git a/tests/general/date_add.out b/tests/general/date_add.out
new file mode 100644
index 00000000..fbca16b4
--- /dev/null
+++ b/tests/general/date_add.out
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<dates-and-times>
+ <d>2001-01-04</d>
+ <d>2001-02-04</d>
+ <d>2001-12-04</d>
+ <d>2001-12-31</d>
+ <d>2002-01</d>
+ <d>2002-01-02</d>
+</dates-and-times>
diff --git a/tests/general/date_add.xsl b/tests/general/date_add.xsl
new file mode 100644
index 00000000..0ef39c5a
--- /dev/null
+++ b/tests/general/date_add.xsl
@@ -0,0 +1,16 @@
+<xsl:stylesheet version="1.0"
+ xmlns:date="http://exslt.org/dates-and-times"
+ exclude-result-prefixes="date"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output indent="yes"/>
+ <xsl:template match="/">
+ <dates-and-times>
+ <d><xsl:value-of select="date:add( '2001-01', 'P3D' )" /></d>
+ <d><xsl:value-of select="date:add( '2001-02', 'P3D' )" /></d>
+ <d><xsl:value-of select="date:add( '2001-12', 'P3D' )" /></d>
+ <d><xsl:value-of select="date:add( '2001-12', 'P30D' )" /></d>
+ <d><xsl:value-of select="date:add( '2001-12', 'P31D' )" /></d>
+ <d><xsl:value-of select="date:add( '2001-12', 'P32D' )" /></d>
+ </dates-and-times>
+ </xsl:template>
+</xsl:stylesheet>