@@ -287,10 +287,14 @@ priv fn do_strptime(s: &str, format: &str) -> Result<Tm, ~str> {
287
287
fn match_digits ( ss : & str , pos : uint , digits : uint , ws : bool )
288
288
-> Option < ( i32 , uint ) > {
289
289
let mut pos = pos;
290
+ let len = ss. len ( ) ;
290
291
let mut value = 0_i32 ;
291
292
292
293
let mut i = 0 u;
293
294
while i < digits {
295
+ if pos >= len {
296
+ return None ;
297
+ }
294
298
let range = ss. char_range_at ( pos) ;
295
299
pos = range. next ;
296
300
@@ -856,7 +860,7 @@ priv fn do_strftime(format: &str, tm: &Tm) -> ~str {
856
860
857
861
#[ cfg( test) ]
858
862
mod tests {
859
- use time :: * ;
863
+ use super :: * ;
860
864
861
865
use std:: float;
862
866
use std:: os;
@@ -904,7 +908,7 @@ mod tests {
904
908
os:: setenv ( "TZ" , "America/Los_Angeles" ) ;
905
909
tzset ( ) ;
906
910
907
- let time = :: time :: Timespec :: new ( 1234567890 , 54321 ) ;
911
+ let time = Timespec :: new ( 1234567890 , 54321 ) ;
908
912
let utc = at_utc ( time) ;
909
913
910
914
assert ! ( utc. tm_sec == 30_i32 ) ;
@@ -925,7 +929,7 @@ mod tests {
925
929
os::setenv(" TZ ", " America /Los_Angeles ");
926
930
tzset();
927
931
928
- let time = ::time:: Timespec::new(1234567890, 54321);
932
+ let time = Timespec::new(1234567890, 54321);
929
933
let local = at(time);
930
934
931
935
error!(" time_at: %?", local);
@@ -953,7 +957,7 @@ mod tests {
953
957
os::setenv(" TZ ", " America /Los_Angeles ");
954
958
tzset();
955
959
956
- let time = ::time:: Timespec::new(1234567890, 54321);
960
+ let time = Timespec::new(1234567890, 54321);
957
961
let utc = at_utc(time);
958
962
959
963
assert_eq!(utc.to_timespec(), time);
@@ -964,7 +968,7 @@ mod tests {
964
968
os::setenv(" TZ ", " America /Los_Angeles ");
965
969
tzset();
966
970
967
- let time = ::time:: Timespec::new(1234567890, 54321);
971
+ let time = Timespec::new(1234567890, 54321);
968
972
let utc = at_utc(time);
969
973
let local = at(time);
970
974
@@ -1145,7 +1149,7 @@ mod tests {
1145
1149
os::setenv(" TZ ", " America /Los_Angeles ");
1146
1150
tzset();
1147
1151
1148
- let time = ::time:: Timespec::new(1234567890, 54321);
1152
+ let time = Timespec::new(1234567890, 54321);
1149
1153
let utc = at_utc(time);
1150
1154
let local = at(time);
1151
1155
@@ -1159,7 +1163,7 @@ mod tests {
1159
1163
os::setenv(" TZ ", " America /Los_Angeles ");
1160
1164
tzset();
1161
1165
1162
- let time = ::time:: Timespec::new(1234567890, 54321);
1166
+ let time = Timespec::new(1234567890, 54321);
1163
1167
let utc = at_utc(time);
1164
1168
let local = at(time);
1165
1169
0 commit comments