PR28979, internal error in demand_empty_rest_of_line
authorAlan Modra <amodra@gmail.com>
Sun, 20 Mar 2022 07:38:38 +0000 (18:08 +1030)
committerAlan Modra <amodra@gmail.com>
Sun, 20 Mar 2022 08:34:22 +0000 (19:04 +1030)
commitbdcd45685beb9d4b865c68152e47601c7e3d170c
tree6d2b76de8cecd4d35323efff9b9152f0b8238843
parentba09d2a8cd6aecb10c5f3b99284e7e82df51cdbc
PR28979, internal error in demand_empty_rest_of_line

The change in read_a_source_file prevents the particular testcase in
the PR from triggering the assertion in demand_empty_rest_of_line.
I've also removed the assertion.  Nothing much goes wrong with gas if
something else triggers it, so it's not worthy of an abort.

I've also changed my previous patch to ignore_rest_of_line to allow
that function to increment input_line_pointer past buffer_limit, like
demand_empty_rest_of_line:  The two functions ought to behave the
same in that respect.  Finally, demand_empty_rest_of_line gets a
little hardening to prevent accesses past buffer_limit plus one.

PR 28979
* read.c (read_a_source_file): Calculate known size for sbuf
rather than calling strlen.
(demand_empty_rest_of_line): Remove "know" check.  Expand comment.
Don't dereference input_line_pointer when past buffer_limit.
(ignore_rest_of_line): Allow input_line_pointer to increment to
buffer_limit plus one.  Expand comment.
gas/read.c