diff options
author | Alain Frisch <alain@frisch.fr> | 2010-04-06 20:57:11 +0000 |
---|---|---|
committer | Alain Frisch <alain@frisch.fr> | 2010-04-06 20:57:11 +0000 |
commit | 1a0d254dbeaa1439a1d8709e5cf0a8488a4b15a2 (patch) | |
tree | 0d3ba524f2ebdaf0843da77e482cb1d9190a7530 | |
parent | 980f7c3b7d82e0409cee36ab770be0f48d1ee169 (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.ml | 6 |
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; |