diff options
author | Damien Doligez <damien.doligez-inria.fr> | 1999-12-30 17:09:59 +0000 |
---|---|---|
committer | Damien Doligez <damien.doligez-inria.fr> | 1999-12-30 17:09:59 +0000 |
commit | 8ad2e195ac711233d65069a4cbcf12fe6aa22956 (patch) | |
tree | ee4b5bd6887661dd9d4a13ad4efdc5ee36956a6e /toplevel | |
parent | 86764721c3943cb7a7e8c27c638cc0b802b5d4ad (diff) |
fix bug ligne trop longue
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@2723 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'toplevel')
-rw-r--r-- | toplevel/toploop.ml | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/toplevel/toploop.ml b/toplevel/toploop.ml index 7e7742139..077303f0f 100644 --- a/toplevel/toploop.ml +++ b/toplevel/toploop.ml @@ -242,14 +242,21 @@ let refill_lexbuf buffer len = first_line := false; let i = ref 0 in try - while !i < len && (let c = input_char stdin in buffer.[!i] <- c; c<>'\n') - do incr i done; - !i + 1 - with End_of_file -> - Location.echo_eof (); - if !i > 0 - then (got_eof := true; !i) - else 0 + while true do + if !i >= len then raise Exit; + let c = input_char stdin in + buffer.[!i] <- c; + incr i; + if c = '\n' then raise Exit; + done; + !i + with + | End_of_file -> + Location.echo_eof (); + if !i > 0 + then (got_eof := true; !i) + else 0 + | Exit -> !i end (* Discard everything already in a lexer buffer *) |