summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/go/gofrontend/lex.cc21
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;
}