aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2019-07-03 18:05:20 +0100
committerPedro Alves <palves@redhat.com>2019-07-03 18:05:20 +0100
commita26c8de0ee938a48bc6f6232cdfac1a5eabaa778 (patch)
treed6fa0c141e57fe8c48783fd29930dfec3f08f3c0 /gdb
parent5f4ba3e701d74f280d4bd8820d9c39a854e0d2cf (diff)
downloadgdb-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/ChangeLog5
-rw-r--r--gdb/testsuite/lib/gdb.exp9
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
}
}
}