浏览代码

prevent stack leak (see #7667)

ncannasse 6 年之前
父节点
当前提交
d944bc40b1
共有 1 个文件被更改,包括 1 次插入2 次删除
  1. 1 2
      src/context/abstractCast.ml

+ 1 - 2
src/context/abstractCast.ml

@@ -28,8 +28,7 @@ let do_check_cast ctx tleft eright p =
 	let recurse cf f =
 	let recurse cf f =
 		if cf == ctx.curfield || List.mem cf !cast_stack then error "Recursive implicit cast" p;
 		if cf == ctx.curfield || List.mem cf !cast_stack then error "Recursive implicit cast" p;
 		cast_stack := cf :: !cast_stack;
 		cast_stack := cf :: !cast_stack;
-		let r = f() in
-		cast_stack := List.tl !cast_stack;
+		let r = Std.finally (fun() -> cast_stack := List.tl !cast_stack) f () in
 		r
 		r
 	in
 	in
 	let find a tl f =
 	let find a tl f =