From 308a87dbc0c3bcefa89e78c76d2d149bb4f0e012 Mon Sep 17 00:00:00 2001 From: Patrick Ferris Date: Thu, 30 Apr 2026 16:37:47 +0000 Subject: [PATCH] Fix re-delegation of TC --- src/lib/eunix.ml | 10 ++++------ 1 file(s) changed, 4 insertion(s)(+), 6 deletion(s)(-) diff --git a/src/lib/eunix.ml b/src/lib/eunix.ml --- a/src/lib/eunix.ml +++ b/src/lib/eunix.ml @@ -32,16 +32,14 @@ Fmt.str "%s@%s" name host external getpgrp : unit -> int = "caml_merry_getpgrp" external tcgetpgrp : Unix.file_descr -> int = "caml_merry_tcgetpgrp" -external tcsetpgrp : int -> int -> int = "caml_merry_tcsetpgrp" +external tcsetpgrp : Unix.file_descr -> int -> int = "caml_merry_tcsetpgrp" let delegate_control ~pgid fn = - let shell_pid = Unix.getpid () in + let shell_pid = getpgrp () in Fun.protect - ~finally:(fun () -> - let _ : int = tcsetpgrp 0 shell_pid in - ()) + ~finally:(fun () -> assert (Int.equal 0 @@ tcsetpgrp Unix.stdin shell_pid)) (fun () -> - match tcsetpgrp (Obj.magic Unix.stdin : int) pgid with + match tcsetpgrp Unix.stdin pgid with | 0 -> fn () | n -> Fmt.failwith "tcsetpgrp: %i" n) -- tangled.sh