summaryrefslogtreecommitdiff
path: root/libbacktrace
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2021-03-02 15:46:06 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2021-03-02 15:46:06 -0500
commit41fbacdd10305654b1d10f887fa3f4677f9b8f34 (patch)
tree14f8aedff14c4fb3cb19cc7a922d12d79272eb2a /libbacktrace
parente7ca37649e4f322e7512c6d11813992c61b0a4b3 (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