summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-28 22:31:02 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2012-03-28 22:31:02 +0000
commitaa615cb369d7079aa2a8e6cecd814c08b071dde0 (patch)
tree3266a54e30ca2d8cf212885010822276f35f6a08
parent11bbe02609b7231a2edf432d225b8e10a7431310 (diff)
downloadgcc-aa615cb369d7079aa2a8e6cecd814c08b071dde0.tar.gz
compiler: fix null-dereference on invalid len() arg.
This patch fixes an ICE caused by syntax errors in arguments to unary built-in functions like len(). Updates issue 7. From Rémy Oudompheng. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185935 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/go/gofrontend/expressions.cc4
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index f1e06397cfa..13c7de37835 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -6609,7 +6609,7 @@ Builtin_call_expression::do_lower(Gogo* gogo, Named_object* function,
if (this->code_ == BUILTIN_LEN || this->code_ == BUILTIN_CAP)
{
Expression* arg = this->one_arg();
- if (!arg->is_constant())
+ if (arg != NULL && !arg->is_constant())
{
Find_call_expression find_call;
Expression::traverse(&arg, &find_call);
@@ -6929,7 +6929,7 @@ Expression*
Builtin_call_expression::one_arg() const
{
const Expression_list* args = this->args();
- if (args->size() != 1)
+ if (args == NULL || args->size() != 1)
return NULL;
return args->front();
}