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".
This commit is contained in:
Pedro Alves
2019-07-03 18:05:20 +01:00
parent 5f4ba3e701
commit a26c8de0ee
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,8 @@
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

View File

@ -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
}
}
}