[Bug 274254] The /bin/sh $LINENO value just after a nested function is misleading.
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 274254] The /bin/sh $LINENO value just after a nested function is misleading."
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 274254] The /bin/sh $LINENO value just after a nested function is misleading."
- Reply: bugzilla-noreply_a_freebsd.org: "[Bug 274254] The /bin/sh $LINENO value just after a nested function is misleading."
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 03 Oct 2023 21:34:28 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=274254 Bug ID: 274254 Summary: The /bin/sh $LINENO value just after a nested function is misleading. Product: Base System Version: 13.2-RELEASE Hardware: Any OS: Any Status: New Severity: Affects Some People Priority: --- Component: bin Assignee: bugs@FreeBSD.org Reporter: white-pack@pm.me Created attachment 245417 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=245417&action=edit A sample script for inspiring a fix. The following script reveals the issue 1 #!/bin/sh 2 3 check() 4 { 5 echo $1 - \ 6 $( 7 [ $2 -eq $3 ] \ 8 && echo OK \ 9 || echo FAIL "($2 != $3)" 10 ) 11 } 12 13 main() 14 { 15 check 2 $LINENO 3 16 17 inner() 18 { 19 check 4 $LINENO 3 20 } 21 22 check 3 $LINENO 10 23 inner 24 } 25 26 check 1 $LINENO 26 27 main Here's its output: 1 - OK 2 - OK 3 - FAIL (22 != 10) 4 - OK Every line of the output should be "OK", but the third one fails. The internal logic controlling LINENO seems to ignore that inner() was nested. I attach an ad-hoc "work-around" which could inspire a possible fix. -- You are receiving this mail because: You are the assignee for the bug.