diff options
-rw-r--r-- | gcc/go/gofrontend/lex.cc | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/gcc/go/gofrontend/lex.cc b/gcc/go/gofrontend/lex.cc index 67d4b1b4670..7fabd3dfd1c 100644 --- a/gcc/go/gofrontend/lex.cc +++ b/gcc/go/gofrontend/lex.cc @@ -742,12 +742,7 @@ int Lex::fetch_char(const char* p, unsigned int* value) { unsigned char c = *p; - if (c == 0) - { - *value = 0xfffd; - return 0; - } - else if (c <= 0x7f) + if (c <= 0x7f) { *value = c; return 1; @@ -812,13 +807,19 @@ Lex::advance_one_utf8_char(const char* p, unsigned int* value, bool* issued_error) { *issued_error = false; + + if (*p == '\0') + { + error_at(this->location(), "invalid NUL byte"); + *issued_error = true; + *value = 0; + return p + 1; + } + int adv = Lex::fetch_char(p, value); if (adv == 0) { - if (*p == '\0') - error_at(this->location(), "invalid NUL byte"); - else - error_at(this->location(), "invalid UTF-8 encoding"); + error_at(this->location(), "invalid UTF-8 encoding"); *issued_error = true; return p + 1; } |