[meld] Fix some cases of iteration over BufferLines (closes bgo#638314)



commit 0e7cc5202895acbe5c23ca964e2962ea2d3cec2a
Author: Kai Willadsen <kai willadsen gmail com>
Date:   Tue Jan 4 19:00:15 2011 +1000

    Fix some cases of iteration over BufferLines (closes bgo#638314)
    
    __getitem__ should raise an IndexError if an item beyond the last index
    is requested. Previously we did not do this, because we expect requests
    beyond the last line; specifically requests for (last line + 1). This
    patch changes our behaviour to correctly raise an IndexError if the
    request is for anything past (last line + 1).
    
    This fixes some cases of infinite iteration, as __iter__ wants to see
    that IndexError.

 meld/filediff.py |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
---
diff --git a/meld/filediff.py b/meld/filediff.py
index 175241e..a7fea3d 100644
--- a/meld/filediff.py
+++ b/meld/filediff.py
@@ -115,6 +115,8 @@ class BufferLines(object):
         return lines
 
     def __getitem__(self, i):
+        if i > len(self):
+            raise IndexError
         line_start = get_iter_at_line_or_eof(self.buf, i)
         line_end = line_start.copy()
         if not line_end.ends_line():



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]