https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99323

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <dmalc...@gcc.gnu.org>:

https://gcc.gnu.org/g:41fbacdd10305654b1d10f887fa3f4677f9b8f34

commit r11-7461-g41fbacdd10305654b1d10f887fa3f4677f9b8f34
Author: David Malcolm <dmalc...@redhat.com>
Date:   Tue Mar 2 15:46:06 2021 -0500

    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.

Reply via email to