From 8fe402e9f7655ce60d1d5b86bddd2ffeb577e338 Mon Sep 17 00:00:00 2001 From: Johannes Altmanninger Date: Sat, 11 Oct 2025 12:23:36 +0200 Subject: [PATCH] fg: remove rogue abs() on PID argument Present since the initial commit but I don't think anyone relies on this. --- src/builtins/fg.rs | 12 +++++++----- tests/checks/fg.fish | 9 +++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 tests/checks/fg.fish diff --git a/src/builtins/fg.rs b/src/builtins/fg.rs index 99587e7fe..ba3e42432 100644 --- a/src/builtins/fg.rs +++ b/src/builtins/fg.rs @@ -70,17 +70,19 @@ pub fn fg(parser: &Parser, streams: &mut IoStreams, argv: &mut [&wstr]) -> Built job = None; } else { match fish_wcstoi(argv[optind]) { - Err(_) => { - streams - .err - .append(wgettext_fmt!(BUILTIN_ERR_NOT_NUMBER, cmd, argv[optind])); + Ok(..0) | Err(_) => { + streams.err.append(wgettext_fmt!( + "%s: '%s' is not a valid process ID", + cmd, + argv[optind] + )); job_pos = None; job = None; builtin_print_error_trailer(parser, streams.err, cmd); } Ok(pid) => { let raw_pid = pid; - let pid = Pid::new(pid.abs()); + let pid = Pid::new(pid); let j = pid.and_then(|pid| parser.job_get_with_index_from_pid(pid)); if j.as_ref() .map_or(true, |(_pos, j)| !j.is_constructed() || j.is_completed()) diff --git a/tests/checks/fg.fish b/tests/checks/fg.fish new file mode 100644 index 000000000..4b67dd09a --- /dev/null +++ b/tests/checks/fg.fish @@ -0,0 +1,9 @@ +# RUN: %fish %s + +builtin fg -- -1 +# CHECKERR: fg: '-1' is not a valid process ID +# CHECKERR: {{.*}}/fg.fish (line {{\d+}}): +# CHECKERR: builtin fg -- -1 +# CHECKERR: ^ +# CHECKERR: +# CHECKERR: (Type 'help fg' for related documentation)