From daeb4f80d1f07da857ca83a18de3cf6e6ba47f60 Mon Sep 17 00:00:00 2001 From: Ajay Bhargav Baaskaran Date: Thu, 7 Feb 2019 15:06:26 -0800 Subject: [PATCH] Fix invalid cast with end script tag containing code (dotnet/aspnetcore-tooling#193) \n\nCommit migrated from https://github.com/dotnet/aspnetcore-tooling/commit/56fa17b094b61aaedf9b8c8454c84f2cf5e0a63a --- .../src/Legacy/HtmlMarkupParser.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/Razor/Microsoft.AspNetCore.Razor.Language/src/Legacy/HtmlMarkupParser.cs b/src/Razor/Microsoft.AspNetCore.Razor.Language/src/Legacy/HtmlMarkupParser.cs index 02c7eec22d..e66b9c531c 100644 --- a/src/Razor/Microsoft.AspNetCore.Razor.Language/src/Legacy/HtmlMarkupParser.cs +++ b/src/Razor/Microsoft.AspNetCore.Razor.Language/src/Legacy/HtmlMarkupParser.cs @@ -1357,8 +1357,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var tagStart = CurrentStart; builder.Add(OutputAsMarkupLiteral()); - SpanContext.EditHandler.AcceptedCharacters = endTagAcceptedCharacters; - var openAngleToken = EatCurrentToken(); // '<' var forwardSlashToken = EatCurrentToken(); // '/' var tagNameToken = EatCurrentToken(); // 'script' @@ -1369,8 +1367,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { var miscAttributeBuilder = pooledResult.Builder; - ParseMarkupNodes(miscAttributeBuilder, ParseMode.Text, token => token.Kind == SyntaxKind.CloseAngle); + // We want to accept malformed end tags as content. + AcceptUntil(SyntaxKind.CloseAngle, SyntaxKind.OpenAngle); miscAttributeBuilder.Add(OutputAsMarkupLiteral()); + if (miscAttributeBuilder.Count > 0) { miscContent = SyntaxFactory.MarkupMiscAttributeContent(miscAttributeBuilder.ToList()); @@ -1390,6 +1390,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } } + SpanContext.EditHandler.AcceptedCharacters = endTagAcceptedCharacters; + endTag = SyntaxFactory.MarkupEndTag( openAngleToken, forwardSlashToken,