On Tue, 18 Jul 2023, Luca Fancellu wrote:
> Fix the line number on the registration of a 'remove' change type when
> consecutive 'remove' changes are registered.
> 
> Currently the algorithm registers consecutive 'remove' changes at the same
> line it encounter the first one, 'add' changes type are not affected by the
> bug.
> 
> Fixes: 1d7c45f895b6 ("xen/misra: diff-report.py: add report patching feature")
> Signed-off-by: Luca Fancellu <[email protected]>

Acked-by: Stefano Stabellini <[email protected]>


> ---
>  .../xen_analysis/diff_tool/unified_format_parser.py        | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/scripts/xen_analysis/diff_tool/unified_format_parser.py 
> b/xen/scripts/xen_analysis/diff_tool/unified_format_parser.py
> index 8b3fbc318df7..6c506caeafce 100644
> --- a/xen/scripts/xen_analysis/diff_tool/unified_format_parser.py
> +++ b/xen/scripts/xen_analysis/diff_tool/unified_format_parser.py
> @@ -144,6 +144,7 @@ class UnifiedFormatParser(object):
>          file_linenum = 0
>          hunk_a_linemax = 0
>          hunk_b_linemax = 0
> +        consecutive_remove = 0
>          diff_elem = None
>          parse_state = ParserState.FIND_DIFF_HEADER
>          ChangeMode = ChangeSet.ChangeMode
> @@ -210,14 +211,18 @@ class UnifiedFormatParser(object):
>                  if (hunk_b_linemax > 0) and line.startswith("+"):
>                      diff_elem.add_change(file_linenum, ChangeType.ADD)
>                      hunk_b_linemax -= 1
> +                    consecutive_remove = 0
>                  elif (hunk_a_linemax > 0) and line.startswith("-"):
> -                    diff_elem.add_change(file_linenum, ChangeType.REMOVE)
> +                    diff_elem.add_change(file_linenum + consecutive_remove,
> +                                         ChangeType.REMOVE)
>                      hunk_a_linemax -= 1
>                      file_linenum -= 1
> +                    consecutive_remove += 1
>                  elif ((hunk_a_linemax + hunk_b_linemax) > 0) and \
>                          line.startswith(" "):
>                      hunk_a_linemax -= 1 if (hunk_a_linemax > 0) else 0
>                      hunk_b_linemax -= 1 if (hunk_b_linemax > 0) else 0
> +                    consecutive_remove = 0
>  
>                  if (hunk_a_linemax + hunk_b_linemax) <= 0:
>                      parse_state = ParserState.FIND_HUNK_OR_DIFF_HEADER
> -- 
> 2.34.1
> 

Reply via email to