diff options
author | David Malcolm <dmalcolm@redhat.com> | 2021-03-02 15:46:06 -0500 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2021-03-02 15:46:06 -0500 |
commit | 41fbacdd10305654b1d10f887fa3f4677f9b8f34 (patch) | |
tree | 14f8aedff14c4fb3cb19cc7a922d12d79272eb2a /libbacktrace | |
parent | e7ca37649e4f322e7512c6d11813992c61b0a4b3 (diff) |
diagnostics: fix ICE on fix-it hints on very long lines [PR99323]
PR c/99323 describes an ICE due to a failed assertion deep inside the
fix-it printing machinery, where the fix-it hints on one line have not
been properly sorted in layout's constructor.
The underlying issue occurs when multiple fix-it hints affect a line
wider that LINE_MAP_MAX_COLUMN_NUMBER, where the location_t values for
characters after that threshold fall back to having column zero.
It's not meaningful to try to handle fix-it hints without column
information, so this patch rejects them as they are added to the
rich_location, falling back to the "no fix-it hints on this diagnostic"
case, fixing the crash.
gcc/ChangeLog:
PR c/99323
* diagnostic-show-locus.c
(selftest::test_one_liner_many_fixits_2): Fix accidental usage of
column 0.
gcc/testsuite/ChangeLog:
PR c/99323
* gcc.dg/pr99323-1.c: New test.
* gcc.dg/pr99323-2.c: New test.
libcpp/ChangeLog:
PR c/99323
* line-map.c (rich_location::maybe_add_fixit): Reject fix-it hints
at column 0.
Diffstat (limited to 'libbacktrace')
0 files changed, 0 insertions, 0 deletions