sandygao 2003/02/21 09:00:13
Modified: java/src/org/apache/xerces/impl/dv/xs
AbstractDateTimeDV.java
Log:
Fixing bug 17020: didn't report error on some invalid date/time literals.
Revision Changes Path
1.9 +13 -4
xml-xerces/java/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java
Index: AbstractDateTimeDV.java
===================================================================
RCS file:
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/AbstractDateTimeDV.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- AbstractDateTimeDV.java 16 Jan 2003 18:34:03 -0000 1.8
+++ AbstractDateTimeDV.java 21 Feb 2003 17:00:11 -0000 1.9
@@ -245,11 +245,15 @@
stop = stop+2;
data[s]=parseInt(buffer, start,stop);
+ if (stop == end)
+ return;
+
//get miliseconds (ms)
- int milisec = indexOf(buffer, start, end, '.');
+ start = stop;
+ int milisec = buffer.charAt(start) == '.' ? start : -1;
//find UTC sign if any
- int sign = findUTCSign(buffer, (milisec!=-1)?milisec:start, end);
+ int sign = findUTCSign(buffer, start, end);
//parse miliseconds
if ( milisec != -1 ) {
@@ -257,12 +261,14 @@
if ( sign<0 ) {
//get all digits after "."
- data[ms]=parseInt(buffer, milisec+1, buffer.length());
+ data[ms]=parseInt(buffer, milisec+1, end);
+ start = end;
}
else {
//get ms before UTC sign
data[ms]=parseInt(buffer, milisec+1,sign);
+ start = sign;
}
}
@@ -270,6 +276,9 @@
//parse UTC time zone (hh:mm)
if ( sign>0 ) {
getTimeZone(buffer, data, sign, end, timeZone);
+ }
+ else if (start != end) {
+ throw new RuntimeException("Error in parsing time zone" );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]