# HG changeset patch # User Laurent Charignon # Date 1437165841 25200 # Node ID d68544b69736acc8674563c6bde7d1717f316c3d # Parent 701d8c362aa2866ca661d17095684a1db74ab19d crecord: throws error instead of crashing for large diffs Before this patch, crecord was crashing for large diffs (30k lines on my laptop). This patch catches the exception raised in that case and use the error reporting mechanism introduced in the previous patch for notifying the user of the issue. It is not possible to add a test for that for now as we don't yet have full blown ui tests for the curses interface. diff -r 701d8c362aa2 -r d68544b69736 mercurial/crecord.py --- a/mercurial/crecord.py Fri Jul 17 13:41:17 2015 -0700 +++ b/mercurial/crecord.py Fri Jul 17 13:44:01 2015 -0700 @@ -1612,8 +1612,12 @@ # add 1 so to account for last line text reaching end of line self.numpadlines = self.getnumlinesdisplayed(ignorefolding=True) + 1 - self.chunkpad = curses.newpad(self.numpadlines, self.xscreensize) + try: + self.chunkpad = curses.newpad(self.numpadlines, self.xscreensize) + except curses.error: + self.initerr = _('this diff is too large to be displayed') + return # initialize selecteitemendline (initial start-line is 0) self.selecteditemendline = self.getnumlinesdisplayed( self.currentselecteditem, recursechildren=False)