@@ -216,6 +216,7 @@ class LinkSyntax extends DelimiterSyntax {
216216 final char = parser.charAt (parser.pos);
217217 if (char == $backslash) {
218218 parser.advanceBy (1 );
219+ if (parser.isDone) return null ;
219220 final next = parser.charAt (parser.pos);
220221 if (next != $backslash && next != $rbracket) {
221222 buffer.writeCharCode (char);
@@ -273,12 +274,14 @@ class LinkSyntax extends DelimiterSyntax {
273274 /// Returns the link if it was successfully created, `null` otherwise.
274275 InlineLink ? _parseInlineBracketedLink (InlineParser parser) {
275276 parser.advanceBy (1 );
277+ if (parser.isDone) return null ;
276278
277279 final buffer = StringBuffer ();
278280 while (true ) {
279281 final char = parser.charAt (parser.pos);
280282 if (char == $backslash) {
281283 parser.advanceBy (1 );
284+ if (parser.isDone) return null ;
282285 final next = parser.charAt (parser.pos);
283286 // TODO: Follow the backslash spec better here.
284287 // https://spec.commonmark.org/0.30/#backslash-escapes
@@ -302,6 +305,7 @@ class LinkSyntax extends DelimiterSyntax {
302305 final destination = buffer.toString ();
303306
304307 parser.advanceBy (1 );
308+ if (parser.isDone) return null ;
305309 final char = parser.charAt (parser.pos);
306310 if (char == $space || char == $lf || char == $cr || char == $ff) {
307311 final title = _parseTitle (parser);
@@ -433,13 +437,15 @@ class LinkSyntax extends DelimiterSyntax {
433437
434438 final closeDelimiter = delimiter == $lparen ? $rparen : delimiter;
435439 parser.advanceBy (1 );
440+ if (parser.isDone) return null ;
436441
437442 // Now we look for an un-escaped closing delimiter.
438443 final buffer = StringBuffer ();
439444 while (true ) {
440445 final char = parser.charAt (parser.pos);
441446 if (char == $backslash) {
442447 parser.advanceBy (1 );
448+ if (parser.isDone) return null ;
443449 final next = parser.charAt (parser.pos);
444450 if (next != $backslash && next != closeDelimiter) {
445451 buffer.writeCharCode (char);
0 commit comments