From d2d0c66bc2fa9c030fe19b6a6da4f153fe8a2f77 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Tue, 11 Mar 2014 10:02:28 -0400
Subject: [PATCH] Workaround pegdown bug and improve relative image path processing

---
 src/main/java/com/gitblit/utils/MarkdownUtils.java |   13 ++++++++++---
 1 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/gitblit/utils/MarkdownUtils.java b/src/main/java/com/gitblit/utils/MarkdownUtils.java
index dcd79f1..da0db79 100644
--- a/src/main/java/com/gitblit/utils/MarkdownUtils.java
+++ b/src/main/java/com/gitblit/utils/MarkdownUtils.java
@@ -25,10 +25,13 @@
 
 import org.apache.commons.io.IOUtils;
 import org.pegdown.LinkRenderer;
+import org.pegdown.ParsingTimeoutException;
 import org.pegdown.PegDownProcessor;
+import org.pegdown.ast.RootNode;
 
 import com.gitblit.IStoredSettings;
 import com.gitblit.Keys;
+import com.gitblit.wicket.MarkupProcessor.WorkaroundHtmlSerializer;
 
 /**
  * Utility methods for transforming raw markdown text to html.
@@ -72,9 +75,13 @@
 	 * @throws java.text.ParseException
 	 */
 	public static String transformMarkdown(String markdown, LinkRenderer linkRenderer) {
-		PegDownProcessor pd = new PegDownProcessor(ALL & ~SMARTYPANTS);
-		String html = pd.markdownToHtml(markdown, linkRenderer == null ? new LinkRenderer() : linkRenderer);
-		return html;
+		try {
+			PegDownProcessor pd = new PegDownProcessor(ALL & ~SMARTYPANTS);
+			RootNode astRoot = pd.parseMarkdown(markdown.toCharArray());
+			return new WorkaroundHtmlSerializer(linkRenderer == null ? new LinkRenderer() : linkRenderer).toHtml(astRoot);
+		} catch (ParsingTimeoutException e) {
+			return null;
+		}
 	}
 
 	/**

--
Gitblit v1.9.1