diff options
author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-28 22:31:02 +0000 |
---|---|---|
committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-03-28 22:31:02 +0000 |
commit | aa615cb369d7079aa2a8e6cecd814c08b071dde0 (patch) | |
tree | 3266a54e30ca2d8cf212885010822276f35f6a08 | |
parent | 11bbe02609b7231a2edf432d225b8e10a7431310 (diff) | |
download | gcc-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.cc | 4 |
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(); } |