From 4d4acdcd07ae34a0f08b54ee03d4dcd8744646d0 Mon Sep 17 00:00:00 2001 From: ian Date: Wed, 27 Jan 2016 00:00:58 +0000 Subject: [PATCH] compiler: Don't crash on erroneous array return types. Another issue with erroneous array types. When an erroneous array type is in a function's signature, particularly the return type, we must guarantee that type is changed into an error type. Otherwise, any operations that work on arrays and slices will crash when applied to the erroneous array return type. Fixes golang/go#12939. Reviewed-on: https://go-review.googlesource.com/16235 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232858 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/go/gofrontend/MERGE | 2 +- gcc/go/gofrontend/parse.cc | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 96a1e9ffe55d..8ece73d81166 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -721c778adb8f99d8a6b7795dbad86013ccc9ba91 +9e68d67d65fd72b9b4f163f2f26e15cd0d3e2cd2 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/go/gofrontend/parse.cc b/gcc/go/gofrontend/parse.cc index 9d6a8c6f4a64..5c493700de68 100644 --- a/gcc/go/gofrontend/parse.cc +++ b/gcc/go/gofrontend/parse.cc @@ -419,6 +419,8 @@ Parse::array_type(bool may_use_ellipsis) } Type* element_type = this->type(); + if (element_type->is_error_type()) + return Type::make_error_type(); return Type::make_array_type(element_type, length); } -- 2.47.3