소스 검색

[eval] explicitly check for directories on Sys.readDirectory

because apparently Sys.readdir doesn't care

closes #8232
Simon Krajewski 6 년 전
부모
커밋
1c7dadec59
1개의 변경된 파일7개의 추가작업 그리고 1개의 파일을 삭제
  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))
 	)