diff --git a/ChangeLog b/ChangeLog index 2aa9e64fe9e2a88c656b38d069419292e0b77c73_Q2hhbmdlTG9n..a9b03c3c2cb01a580a2f5ce0fdff38f09aa23d7a_Q2hhbmdlTG9n 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Sep 24 09:17:22 PDT 2004 William Brack <wbrack@mmm.com.hk> + + * libexslt/date.c: fixed problem with empty sets, etc. + (see discussion on mailing list) + Sat Sep 18 17:08:31 PDT 2004 William Brack <wbrack@mmm.com.hk> * libexslt/date.c: fixed problem with timezone offset diff --git a/libexslt/date.c b/libexslt/date.c index 2aa9e64fe9e2a88c656b38d069419292e0b77c73_bGliZXhzbHQvZGF0ZS5j..a9b03c3c2cb01a580a2f5ce0fdff38f09aa23d7a_bGliZXhzbHQvZGF0ZS5j 100644 --- a/libexslt/date.c +++ b/libexslt/date.c @@ -2748,5 +2748,6 @@ if (xmlXPathCheckError (ctxt)) return; - if ((ns == NULL) || (ns->nodeNr == 0)) + if ((ns == NULL) || (ns->nodeNr == 0)) { + xmlXPathReturnEmptyString (ctxt); return; @@ -2752,3 +2753,4 @@ return; + } total = exsltDateCreateDate (XS_DURATION); @@ -2753,6 +2755,8 @@ total = exsltDateCreateDate (XS_DURATION); + if (total == NULL) + return; for (i = 0; i < ns->nodeNr; i++) { tmp = xmlXPathCastNodeToString (ns->nodeTab[i]); @@ -2755,6 +2759,7 @@ for (i = 0; i < ns->nodeNr; i++) { tmp = xmlXPathCastNodeToString (ns->nodeTab[i]); - if (tmp == NULL) + if (tmp == NULL) { + exsltDateFreeDate (total); return; @@ -2760,5 +2765,6 @@ return; + } x = exsltDateParseDuration (tmp); if (x == NULL) { xmlFree (tmp); @@ -2761,7 +2767,9 @@ x = exsltDateParseDuration (tmp); if (x == NULL) { xmlFree (tmp); + exsltDateFreeDate (total); + xmlXPathReturnEmptyString (ctxt); return; }