@@ -282,7 +282,7 @@ impure fn consume_any_line_comment(reader rdr) {
282
282
if ( rdr. curr ( ) == '/' ) {
283
283
alt ( rdr. next ( ) ) {
284
284
case ( '/' ) {
285
- while ( rdr. curr ( ) != '\n' ) {
285
+ while ( rdr. curr ( ) != '\n' && !rdr . is_eof ( ) ) {
286
286
rdr. bump ( ) ;
287
287
}
288
288
// Restart whitespace munch.
@@ -317,6 +317,10 @@ impure fn consume_block_comment(reader rdr) {
317
317
rdr. bump ( ) ;
318
318
}
319
319
}
320
+ if ( rdr. is_eof ( ) ) {
321
+ log "unterminated block comment" ;
322
+ fail;
323
+ }
320
324
}
321
325
// restart whitespace munch.
322
326
be consume_any_whitespace ( rdr) ;
@@ -800,9 +804,9 @@ impure fn consume_whitespace(reader rdr) -> uint {
800
804
impure fn read_line_comment ( reader rdr) -> cmnt {
801
805
auto p = rdr. get_curr_pos ( ) ;
802
806
rdr. bump ( ) ; rdr. bump ( ) ;
803
- consume_whitespace ( rdr) ;
807
+ while ( rdr. curr ( ) == ' ' ) { rdr . bump ( ) ; }
804
808
auto val = "" ;
805
- while ( rdr. curr ( ) != '\n' ) {
809
+ while ( rdr. curr ( ) != '\n' && !rdr . is_eof ( ) ) {
806
810
_str. push_char ( val, rdr. curr ( ) ) ;
807
811
rdr. bump ( ) ;
808
812
}
@@ -814,7 +818,7 @@ impure fn read_line_comment(reader rdr) -> cmnt {
814
818
impure fn read_block_comment ( reader rdr) -> cmnt {
815
819
auto p = rdr. get_curr_pos ( ) ;
816
820
rdr. bump ( ) ; rdr. bump ( ) ;
817
- consume_whitespace ( rdr) ;
821
+ while ( rdr. curr ( ) == ' ' ) { rdr . bump ( ) ; }
818
822
let vec[ str] lines = vec ( ) ;
819
823
auto val = "" ;
820
824
auto level = 1 ;
@@ -837,6 +841,7 @@ impure fn read_block_comment(reader rdr) -> cmnt {
837
841
_str. push_char ( val, rdr. curr ( ) ) ;
838
842
rdr. bump ( ) ;
839
843
}
844
+ if ( rdr. is_eof ( ) ) { fail; }
840
845
}
841
846
ret rec( val=cmnt_block ( lines) ,
842
847
pos=p,
0 commit comments