summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlain Frisch <alain@frisch.fr>2010-04-06 20:57:11 +0000
committerAlain Frisch <alain@frisch.fr>2010-04-06 20:57:11 +0000
commit1a0d254dbeaa1439a1d8709e5cf0a8488a4b15a2 (patch)
tree0d3ba524f2ebdaf0843da77e482cb1d9190a7530
parent980f7c3b7d82e0409cee36ab770be0f48d1ee169 (diff)
PR #5018: Wrong exception raised by Dynlink.loadfile.
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@10234 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--otherlibs/dynlink/dynlink.ml6
1 files changed, 5 insertions, 1 deletions
diff --git a/otherlibs/dynlink/dynlink.ml b/otherlibs/dynlink/dynlink.ml
index 1596e9af1..376104c14 100644
--- a/otherlibs/dynlink/dynlink.ml
+++ b/otherlibs/dynlink/dynlink.ml
@@ -197,10 +197,14 @@ let load_compunit ic file_name compunit =
let loadfile file_name =
init();
+ if not (Sys.file_exists file_name) then raise(Error (File_not_found file_name));
let ic = open_in_bin file_name in
try
let buffer = String.create (String.length Config.cmo_magic_number) in
- really_input ic buffer 0 (String.length Config.cmo_magic_number);
+ begin
+ try really_input ic buffer 0 (String.length Config.cmo_magic_number)
+ with End_of_file -> raise(Error(Not_a_bytecode_file file_name))
+ end;
if buffer = Config.cmo_magic_number then begin
let compunit_pos = input_binary_int ic in (* Go to descriptor *)
seek_in ic compunit_pos;