Package: debbindiff
Version: 11
Tags: patch
User: helm...@debian.org
Usertags: rebootstrap

debbindiff --text crashes when it encounters an empty file.

Example input package triggering the error: libreadline6

Example traceback being fixed:

Traceback (most recent call last):
  File "/usr/bin/debbindiff", line 120, in <module>
    sys.exit(main())
  File "/usr/bin/debbindiff", line 114, in main
    output_text(differences, print_func=print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 
71, in output_text
    print_details(difference, print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 
62, in print_details
    print_details(detail, new_print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 
62, in print_details
    print_details(detail, new_print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 
62, in print_details
    print_details(detail, new_print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 
59, in print_details
    print_difference(detail, print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 
36, in print_difference
    if not difference.lines2[-1].endswith('\n'):
IndexError: list index out of range

I think the fix is pretty straight forward.

Helmut
>From 8697e25016f0cd2786563cc5c5aa440fa99ef62d Mon Sep 17 00:00:00 2001
From: Helmut Grohne <hel...@subdivi.de>
Date: Thu, 26 Mar 2015 06:58:20 +0100
Subject: [PATCH] fix IndexError from --text with empty files

Example input package triggering the error: libreadline6

Example traceback being fixed:

Traceback (most recent call last):
  File "/usr/bin/debbindiff", line 120, in <module>
    sys.exit(main())
  File "/usr/bin/debbindiff", line 114, in main
    output_text(differences, print_func=print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 71, in output_text
    print_details(difference, print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 62, in print_details
    print_details(detail, new_print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 62, in print_details
    print_details(detail, new_print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 62, in print_details
    print_details(detail, new_print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 59, in print_details
    print_difference(detail, print_func)
  File "/usr/lib/python2.7/dist-packages/debbindiff/presenters/text.py", line 36, in print_difference
    if not difference.lines2[-1].endswith('\n'):
IndexError: list index out of range
---
 debbindiff/presenters/text.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/debbindiff/presenters/text.py b/debbindiff/presenters/text.py
index 5cda5ce..ca60af8 100644
--- a/debbindiff/presenters/text.py
+++ b/debbindiff/presenters/text.py
@@ -30,10 +30,10 @@ def print_difference(difference, print_func):
         for line in difference.comment.split('\n'):
             print_func(u"│┄ %s" % line)
     if difference.lines1 or difference.lines2:
-        if not difference.lines1[-1].endswith('\n'):
+        if difference.lines1 and not difference.lines1[-1].endswith('\n'):
             difference.lines1[-1] = difference.lines1[-1] + '\n'
             difference.lines1.append('<No newline at the end>\n')
-        if not difference.lines2[-1].endswith('\n'):
+        if difference.lines2 and nand ot difference.lines2[-1].endswith('\n'):
             difference.lines2[-1] = difference.lines2[-1] + '\n'
             difference.lines2.append('<No newline at the end>\n')
         g = difflib.unified_diff(difference.lines1, difference.lines2)
-- 
2.1.4

_______________________________________________
Reproducible-builds mailing list
Reproducible-builds@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/reproducible-builds

Reply via email to