Browse Source

Fixed SD2-1598 - Unhandled UriFormatException when editing url string:

match.Value is checked with Uri.IsWellFormedUriString. GetUriFromMatch returns null if url string is invalid and no LinkElement is constructed.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5237 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 16 years ago
parent
commit
8fc047a728
  1. 12
      src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/LinkElementGenerator.cs

12
src/Libraries/AvalonEdit/ICSharpCode.AvalonEdit/Rendering/LinkElementGenerator.cs

@ -89,7 +89,10 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -89,7 +89,10 @@ namespace ICSharpCode.AvalonEdit.Rendering
Match m = GetMatch(offset);
if (m.Success && m.Index == 0) {
VisualLineLinkText linkText = new VisualLineLinkText(CurrentContext.VisualLine, m.Length);
linkText.NavigateUri = GetUriFromMatch(m);
Uri uri = GetUriFromMatch(m);
if (uri == null)
return null;
linkText.NavigateUri = uri;
linkText.RequireControlModifierForClick = this.RequireControlModifierForClick;
return linkText;
} else {
@ -98,14 +101,17 @@ namespace ICSharpCode.AvalonEdit.Rendering @@ -98,14 +101,17 @@ namespace ICSharpCode.AvalonEdit.Rendering
}
/// <summary>
/// Fetches the URI from the regex match.
/// Fetches the URI from the regex match. Returns null if the URI format is invalid.
/// </summary>
protected virtual Uri GetUriFromMatch(Match match)
{
string targetUrl = match.Value;
if (targetUrl.StartsWith("www.", StringComparison.Ordinal))
targetUrl = "http://" + targetUrl;
return new Uri(targetUrl);
if (Uri.IsWellFormedUriString(targetUrl, UriKind.Absolute))
return new Uri(targetUrl);
return null;
}
}

Loading…
Cancel
Save