diff options
author | Daniel Veillard <veillard@src.gnome.org> | 2002-07-01 21:52:03 +0000 |
---|---|---|
committer | Daniel Veillard <veillard@src.gnome.org> | 2002-07-01 21:52:03 +0000 |
commit | fdc9156a753e839386d9f82b7a962f9779de862c (patch) | |
tree | 0067e9730f7006edbe4ee73c4ec10ce5e3b83d62 /xmlschemastypes.c | |
parent | 692092b5886073a8cd1c97bb7d57579e4a9cfc3f (diff) | |
download | android_external_libxml2-fdc9156a753e839386d9f82b7a962f9779de862c.tar.gz android_external_libxml2-fdc9156a753e839386d9f82b7a962f9779de862c.tar.bz2 android_external_libxml2-fdc9156a753e839386d9f82b7a962f9779de862c.zip |
applied patch from Richard Jinks for the namespace axis + fixed a memory
* xpath.c: applied patch from Richard Jinks for the namespace
axis + fixed a memory error.
* parser.c parserInternals.c: applied patches from Peter Jacobi
removing ctxt->token for good.
* xmlschemas.c xmlschemastypes.c: fixed a few memory leaks
popped out by the regression tests.
* Makefile.am: patch for threads makefile from Gary Pennington
Daniel
Diffstat (limited to 'xmlschemastypes.c')
-rw-r--r-- | xmlschemastypes.c | 50 |
1 files changed, 38 insertions, 12 deletions
diff --git a/xmlschemastypes.c b/xmlschemastypes.c index 4d632248..06150252 100644 --- a/xmlschemastypes.c +++ b/xmlschemastypes.c @@ -1463,18 +1463,25 @@ xmlSchemaCompareDates (xmlSchemaValPtr x, xmlSchemaValPtr y) q1 = xmlSchemaDateNormalize(y, (14 * SECS_PER_HOUR)); q1d = _xmlSchemaDateCastYMToDays(q1) + q1->value.date.day; - if (p1d < q1d) + if (p1d < q1d) { + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); return -1; - else if (p1d == q1d) { + } else if (p1d == q1d) { double sec; sec = TIME_TO_NUMBER(p1) - TIME_TO_NUMBER(q1); - if (sec < 0.0) + if (sec < 0.0) { + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); return -1; - else { + } else { /* normalize y - 14:00 */ q2 = xmlSchemaDateNormalize(y, -(14 * SECS_PER_HOUR)); q2d = _xmlSchemaDateCastYMToDays(q2) + q2->value.date.day; + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); + xmlSchemaFreeValue(q2); if (p1d > q2d) return 1; else if (p1d == q2d) { @@ -1485,7 +1492,10 @@ xmlSchemaCompareDates (xmlSchemaValPtr x, xmlSchemaValPtr y) return 2; /* indeterminate */ } } - } + } else { + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); + } } } else if (y->value.date.tz_flag) { q1 = xmlSchemaDateNormalize(y, 0); @@ -1495,19 +1505,26 @@ xmlSchemaCompareDates (xmlSchemaValPtr x, xmlSchemaValPtr y) p1 = xmlSchemaDateNormalize(x, -(14 * SECS_PER_HOUR)); p1d = _xmlSchemaDateCastYMToDays(p1) + p1->value.date.day; - if (p1d < q1d) + if (p1d < q1d) { + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); return -1; - else if (p1d == q1d) { + } else if (p1d == q1d) { double sec; sec = TIME_TO_NUMBER(p1) - TIME_TO_NUMBER(q1); - if (sec < 0.0) + if (sec < 0.0) { + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); return -1; - else { + } else { /* normalize x + 14:00 */ p2 = xmlSchemaDateNormalize(x, (14 * SECS_PER_HOUR)); p2d = _xmlSchemaDateCastYMToDays(p2) + p2->value.date.day; + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); + xmlSchemaFreeValue(p2); if (p2d > q1d) return 1; else if (p2d == q1d) { @@ -1518,6 +1535,9 @@ xmlSchemaCompareDates (xmlSchemaValPtr x, xmlSchemaValPtr y) return 2; /* indeterminate */ } } + } else { + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); } } @@ -1531,14 +1551,20 @@ xmlSchemaCompareDates (xmlSchemaValPtr x, xmlSchemaValPtr y) p1 = xmlSchemaDateNormalize(x, 0); p1d = _xmlSchemaDateCastYMToDays(p1) + p1->value.date.day; - if (p1d < q1d) + if (p1d < q1d) { + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); return -1; - else if (p1d > q1d) + } else if (p1d > q1d) { + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); return 1; - else { + } else { double sec; sec = TIME_TO_NUMBER(p1) - TIME_TO_NUMBER(q1); + xmlSchemaFreeValue(p1); + xmlSchemaFreeValue(q1); if (sec < 0.0) return -1; else if (sec > 0.0) |