From 6cd3765a1d60b6557b9f083b4218fe00287a9329 Mon Sep 17 00:00:00 2001 From: facelessuser Date: Fri, 4 Sep 2015 19:45:44 -0600 Subject: Fix infinite loop #430 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This should fix the remaining corner cases that can cause infinite loops. Previous iterations did not account for scenarios where the “end” index was less than the “start” index. If the “end” index is ever less than or equal to the “start” index, the “end” will be adjusted to to be “start” + 1 allow the full range to be extracted and replaced. --- markdown/preprocessors.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'markdown/preprocessors.py') diff --git a/markdown/preprocessors.py b/markdown/preprocessors.py index 7fd38d3..7ea4fcf 100644 --- a/markdown/preprocessors.py +++ b/markdown/preprocessors.py @@ -178,10 +178,11 @@ class HtmlBlockPreprocessor(Preprocessor): else: # raw html if len(items) - right_listindex <= 1: # last element right_listindex -= 1 - offset = 1 if i == right_listindex else 0 + if right_listindex <= i: + right_listindex = i + 1 placeholder = self.markdown.htmlStash.store('\n\n'.join( - items[i:right_listindex + offset])) - del items[i:right_listindex + offset] + items[i:right_listindex])) + del items[i:right_listindex] items.insert(i, placeholder) return items -- cgit v1.2.3