aboutsummaryrefslogtreecommitdiffstats
path: root/lib/edoc/src
diff options
context:
space:
mode:
authorTaylor Venable <[email protected]>2011-02-01 18:52:10 -0500
committerTaylor Venable <[email protected]>2011-02-01 18:52:10 -0500
commit6ac05e50a77cc8ebcf335fd9d6908efc74e3e201 (patch)
tree803f8c409b192bb2491ccd28c983059c2a46b6a5 /lib/edoc/src
parent62dad961329a603110ce0e1d3f62554cc5228152 (diff)
downloadotp-6ac05e50a77cc8ebcf335fd9d6908efc74e3e201.tar.gz
otp-6ac05e50a77cc8ebcf335fd9d6908efc74e3e201.tar.bz2
otp-6ac05e50a77cc8ebcf335fd9d6908efc74e3e201.zip
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.
Diffstat (limited to 'lib/edoc/src')
-rw-r--r--lib/edoc/src/edoc_wiki.erl2
1 files changed, 2 insertions, 0 deletions
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