From 02a3b5bfdfe14ffb348d2abcc33c2da9df51c1ce Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sun, 15 May 2011 12:31:33 +0200 Subject: [PATCH] Closes #675: Fix IndexErrors when including nonexisting lines with :rst:dir:`literalinclude`. --- CHANGES | 3 +++ sphinx/directives/code.py | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 534309020..cc2dfca2c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ Release 1.0.8 (in development) ============================== +* #675: Fix IndexErrors when including nonexisting lines with + :rst:dir:`literalinclude`. + * #676: Respect custom function/method parameter separator strings. * #682: Fix JS incompatibility with jQuery >= 1.5. diff --git a/sphinx/directives/code.py b/sphinx/directives/code.py index bfde48e58..6073a7de2 100644 --- a/sphinx/directives/code.py +++ b/sphinx/directives/code.py @@ -152,7 +152,13 @@ class LiteralInclude(Directive): linelist = parselinenos(linespec, len(lines)) except ValueError, err: return [document.reporter.warning(str(err), line=self.lineno)] - lines = [lines[i] for i in linelist] + # just ignore nonexisting lines + nlines = len(lines) + lines = [lines[i] for i in linelist if i < nlines] + if not lines: + return [document.reporter.warning( + 'Line spec %r: no lines pulled from include file %r' % + (linespec, filename), line=self.lineno)] startafter = self.options.get('start-after') endbefore = self.options.get('end-before')