Skip to content

Resolve "ActionView::Template::Error: 366..524 out of range"

What does this MR do?

Rugged sometimes chops a context line in between bytes, resulting in the context line having an invalid encoding: https://github.com/libgit2/rugged/issues/716

When that happens, we will try to detect the encoding for the diff, and sometimes we'll get it wrong. If that difference in encoding results in a difference in string lengths between the diff and the underlying blobs, we'd fail to highlight any inline diffs, and return a 500 status to the user.

As we're using the underlying blobs, the encoding is 'correct' anyway, so if the string range is invalid, we can just discard the inline diff highlighting. We still report to Sentry to ensure that we can investigate further in future.

Are there points in the code the reviewer needs to double check?

Should we do this for all StringRangeMarkers? I thought not, because those shouldn't have this issue, but maybe that's not correct.

Why was this MR needed?

It's a bug!

Does this MR meet the acceptance criteria?

What are the relevant issue numbers?

Closes #42332 (closed).

Edited by Sean McGivern

Merge request reports