From 6ac05e50a77cc8ebcf335fd9d6908efc74e3e201 Mon Sep 17 00:00:00 2001
From: Taylor Venable <taylor@metasyntax.net>
Date: Tue, 1 Feb 2011 18:52:10 -0500
Subject: Fix infinite loop for malformed edoc input

When processing an edoc comment with ``` in it, if the comment ends
without a matching ''' then an infinite loop occurs in the function
edoc_wiki:strip_empty_lines/2. This change fixes that by adding a clause
to return from the function upon the end of the comment input. This
allows an error to be thrown to indicate the problem, which is the same
behaviour as leaving either `` or ` unmatched.
---
 lib/edoc/src/edoc_wiki.erl | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'lib')

diff --git a/lib/edoc/src/edoc_wiki.erl b/lib/edoc/src/edoc_wiki.erl
index e4a3d74734..6f269996c8 100644
--- a/lib/edoc/src/edoc_wiki.erl
+++ b/lib/edoc/src/edoc_wiki.erl
@@ -295,6 +295,8 @@ push_uri(Us, Ss, As) ->
 strip_empty_lines(Cs) ->
     strip_empty_lines(Cs, 0).
 
+strip_empty_lines([], N) ->
+    {[], N};					% reached the end of input
 strip_empty_lines(Cs, N) ->
     {Cs1, Cs2} = edoc_lib:split_at(Cs, $\n),
     case edoc_lib:is_space(Cs1) of
-- 
cgit v1.2.3