From 1ff793f00b413903e9e4740dc17198b43248d8a1 Mon Sep 17 00:00:00 2001 From: Sijawusz Pur Rahnama Date: Sun, 10 Jan 2021 14:29:29 +0100 Subject: [PATCH] Fix edge case where lineno <= context_lines --- src/backtracer/backtrace/frame.cr | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/backtracer/backtrace/frame.cr b/src/backtracer/backtrace/frame.cr index eea7a47..9e0c8a7 100644 --- a/src/backtracer/backtrace/frame.cr +++ b/src/backtracer/backtrace/frame.cr @@ -123,8 +123,11 @@ module Backtracer lineidx = lineno - 1 if context_line = lines[lineidx]? - pre_context = lines[Math.max(0, lineidx - context_lines), context_lines] - post_context = lines[Math.min(lines.size, lineidx + 1), context_lines] + pre_context_lines = + (lineno <= context_lines) ? lineidx : context_lines + + pre_context = lines[(lineidx - context_lines).clamp(0..), pre_context_lines] + post_context = lines[(lineidx + 1).clamp(..lines.size), context_lines] @context_cache[context_lines] = Context.new(