Browse Source

[eval] explicitly check for directories on Sys.readDirectory

because apparently Sys.readdir doesn't care

closes #8232
Simon Krajewski 6 years ago
parent
commit
1c7dadec59
1 changed files with 7 additions and 1 deletions
  1. 7 1
      src/macro/eval/evalStdLib.ml

+ 7 - 1
src/macro/eval/evalStdLib.ml

@@ -1201,7 +1201,13 @@ module StdFileSystem = struct
 	)
 
 	let readDirectory = vfun1 (fun dir ->
-		let d = try Sys.readdir (decode_string dir) with Sys_error s -> exc_string s in
+		let dir = decode_string dir in
+		let d = try
+			if not (Sys.is_directory (patch_path dir)) then exc_string "No such directory";
+			Sys.readdir dir
+		with Sys_error s ->
+			exc_string s
+		in
 		encode_array (Array.to_list (Array.map (fun s -> create_unknown s) d))
 	)