diff options
author | Pedro Alves <palves@redhat.com> | 2019-07-03 18:05:20 +0100 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2019-07-03 18:05:20 +0100 |
commit | a26c8de0ee938a48bc6f6232cdfac1a5eabaa778 (patch) | |
tree | d6fa0c141e57fe8c48783fd29930dfec3f08f3c0 /gdb | |
parent | 5f4ba3e701d74f280d4bd8820d9c39a854e0d2cf (diff) | |
download | gdb-a26c8de0ee938a48bc6f6232cdfac1a5eabaa778.zip gdb-a26c8de0ee938a48bc6f6232cdfac1a5eabaa778.tar.gz gdb-a26c8de0ee938a48bc6f6232cdfac1a5eabaa778.tar.bz2 |
Fix early return in foreach_with_prefix
I noticed that an early return in a foreach_with_prefix block does not
cause the outer scope to return, like:
foreach_with_prefix var {"foo" "bar"} {
return
}
# Control continues here, but it should not.
The problem is that we're missing the usual "return -code" treatment.
This commit fixes it.
gdb/testsuite/ChangeLog:
2019-07-03 Pedro Alves <palves@redhat.com>
* lib/gdb.exp (foreach_with_prefix): Use "catch" and
"return -code".
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 38dcfd3..90b5f8f 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2019-07-03 Pedro Alves <palves@redhat.com> + * lib/gdb.exp (foreach_with_prefix): Use "catch" and + "return -code". + +2019-07-03 Pedro Alves <palves@redhat.com> + PR cli/24732 * gdb.base/shell.exp: Load completion-support.exp. Adjust expected error output. Add completion tests. diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index da36ec0..41f0ef5 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -2025,7 +2025,14 @@ proc foreach_with_prefix {var list body} { upvar 1 $var myvar foreach myvar $list { with_test_prefix "$var=$myvar" { - uplevel 1 $body + set code [catch {uplevel 1 $body} result] + } + + if {$code == 1} { + global errorInfo errorCode + return -code $code -errorinfo $errorInfo -errorcode $errorCode $result + } else { + return -code $code $result } } } |