summaryrefslogtreecommitdiffstats
path: root/toplevel
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>1999-12-30 17:09:59 +0000
committerDamien Doligez <damien.doligez-inria.fr>1999-12-30 17:09:59 +0000
commit8ad2e195ac711233d65069a4cbcf12fe6aa22956 (patch)
treeee4b5bd6887661dd9d4a13ad4efdc5ee36956a6e /toplevel
parent86764721c3943cb7a7e8c27c638cc0b802b5d4ad (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.ml23
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 *)