diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2010-12-15 23:50:02 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2010-12-15 23:50:02 +0000 |
commit | e495c1360ddea801c27f438654fa5e18d6dfc8d4 (patch) | |
tree | 30e5014cf002eb615d3042659dc7661a7bc6fd7f /gcc | |
parent | 81ef977e9e082ca9f23d64eaca9aa5d26a0a408f (diff) | |
download | gcc-e495c1360ddea801c27f438654fa5e18d6dfc8d4.zip gcc-e495c1360ddea801c27f438654fa5e18d6dfc8d4.tar.gz gcc-e495c1360ddea801c27f438654fa5e18d6dfc8d4.tar.bz2 |
Don't crash on tuple initialization from erroneous channel.
From-SVN: r167882
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/go/gofrontend/gogo.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc index 39072e0..b278711 100644 --- a/gcc/go/gofrontend/gogo.cc +++ b/gcc/go/gofrontend/gogo.cc @@ -3126,7 +3126,10 @@ Variable::type_from_tuple(Expression* expr, bool report_error) const else if (expr->receive_expression() != NULL) { Expression* channel = expr->receive_expression()->channel(); - return channel->type()->channel_type()->element_type(); + Type* channel_type = channel->type(); + if (channel_type->is_error_type()) + return Type::make_error_type(); + return channel_type->channel_type()->element_type(); } else { |