From 63e921a2c5bcb7848494377afb3ddcf4e4e6797a Mon Sep 17 00:00:00 2001 From: mrT23 Date: Sun, 11 Aug 2024 15:46:46 +0300 Subject: [PATCH 1/2] Adjust patch extension logic to handle cases where extended size exceeds original file length --- pr_agent/algo/git_patch_processing.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pr_agent/algo/git_patch_processing.py b/pr_agent/algo/git_patch_processing.py index af22549f..470ed657 100644 --- a/pr_agent/algo/git_patch_processing.py +++ b/pr_agent/algo/git_patch_processing.py @@ -50,13 +50,13 @@ def extend_patch(original_file_str, patch_str, patch_extra_lines_before=0, patch if patch_extra_lines_before > 0 or patch_extra_lines_after > 0: extended_start1 = max(1, start1 - patch_extra_lines_before) extended_size1 = size1 + (start1 - extended_start1) + patch_extra_lines_after - if extended_start1 - 1 + extended_size1 > len(original_lines): - # we cannot extend beyond the original file - extended_size1 = len_original_lines - extended_start1 + 1 extended_start2 = max(1, start2 - patch_extra_lines_before) extended_size2 = size2 + (start2 - extended_start2) + patch_extra_lines_after - # if extended_start2 - 1 + extended_size2 > len_original_lines: # incorrect - after the PR, the file may have more lines - # extended_size2 = len_original_lines - extended_start2 + 1 + if extended_start1 - 1 + extended_size1 > len(original_lines): + # we cannot extend beyond the original file + delta_cap = extended_start1 - 1 + extended_size1 - len(original_lines) + extended_size1 = extended_size1 - delta_cap + extended_size2 = extended_size2 - delta_cap delta_lines = original_lines[extended_start1 - 1:start1 - 1] delta_lines = [f' {line}' for line in delta_lines] if section_header: From 12742ef49928a04bfb7aa36cc8686d1de91fc187 Mon Sep 17 00:00:00 2001 From: mrT23 Date: Sun, 11 Aug 2024 15:48:58 +0300 Subject: [PATCH 2/2] Adjust patch extension logic to handle cases where extended size exceeds original file length --- pr_agent/algo/git_patch_processing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pr_agent/algo/git_patch_processing.py b/pr_agent/algo/git_patch_processing.py index 470ed657..a2c06db5 100644 --- a/pr_agent/algo/git_patch_processing.py +++ b/pr_agent/algo/git_patch_processing.py @@ -55,8 +55,8 @@ def extend_patch(original_file_str, patch_str, patch_extra_lines_before=0, patch if extended_start1 - 1 + extended_size1 > len(original_lines): # we cannot extend beyond the original file delta_cap = extended_start1 - 1 + extended_size1 - len(original_lines) - extended_size1 = extended_size1 - delta_cap - extended_size2 = extended_size2 - delta_cap + extended_size1 = max(extended_size1 - delta_cap, size1) + extended_size2 = max(extended_size2 - delta_cap, size2) delta_lines = original_lines[extended_start1 - 1:start1 - 1] delta_lines = [f' {line}' for line in delta_lines] if section_header: