Fix links (#241)

* Fixes #230: links with unbalanced parentheses
* Fixes #233: exception on invalid link
* fix formatting
diff --git a/lib/src/inline_parser.dart b/lib/src/inline_parser.dart
index 92572df..c03cd8a 100644
--- a/lib/src/inline_parser.dart
+++ b/lib/src/inline_parser.dart
@@ -895,7 +895,8 @@
         case $ff:
           var destination = buffer.toString();
           var title = _parseTitle(parser);
-          if (title == null && parser.charAt(parser.pos) != $rparen) {
+          if (title == null &&
+              (parser.isDone || parser.charAt(parser.pos) != $rparen)) {
             // This looked like an inline link, until we found this $space
             // followed by mystery characters; no longer a link.
             return null;
@@ -933,7 +934,7 @@
 
   // Walk the parser forward through any whitespace.
   void _moveThroughWhitespace(InlineParser parser) {
-    while (true) {
+    while (!parser.isDone) {
       var char = parser.charAt(parser.pos);
       if (char != $space &&
           char != $tab &&
@@ -944,7 +945,6 @@
         return;
       }
       parser.advanceBy(1);
-      if (parser.isDone) return;
     }
   }
 
diff --git a/test/markdown_test.dart b/test/markdown_test.dart
index 87b5093..0c8d598 100644
--- a/test/markdown_test.dart
+++ b/test/markdown_test.dart
@@ -23,6 +23,14 @@
   testFile('extensions/emojis.unit', inlineSyntaxes: [EmojiSyntax()]);
   testFile('extensions/inline_html.unit', inlineSyntaxes: [InlineHtmlSyntax()]);
 
+  group('Corner cases', () {
+    validateCore('Incorrect Links', '''
+5 Ethernet ([Music](
+''', '''
+<p>5 Ethernet ([Music](</p>
+''');
+  });
+
   group('Resolver', () {
     Node nyanResolver(String text, [_]) =>
         text.isEmpty ? null : Text('~=[,,_${text}_,,]:3');
diff --git a/test/original/inline_links.unit b/test/original/inline_links.unit
index e62cddd..74afe5a 100644
--- a/test/original/inline_links.unit
+++ b/test/original/inline_links.unit
@@ -76,3 +76,7 @@
 <a href="(yes-a-link)">a</a>
 [a](\(not-a-link))
 <a href="(yes-a-link))">a</a></p>
+>>> links with unbalanced parentheses
+[foo](link(1.png) (what?)
+<<<
+<p>[foo](link(1.png) (what?)</p>