scriban / scriban

A fast, powerful, safe and lightweight scripting language and engine for .NET

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Template.ParseLiquid throws NullReferenceException

Metalnem opened this issue · comments

Template.ParseLiquid can sometimes throw NullReferenceException instead of storing error details in the resulting template. Here's the full program that reproduces this:

namespace Scriban.Run
{
  public class Program
  {
    public static void Main(string[] args)
    {
      Template.ParseLiquid("{%endunless");
    }
  }
}

And here's the full stack trace:

Exception has occurred: CLR/System.NullReferenceException
An unhandled exception of type 'System.NullReferenceException' occurred in Scriban.dll: 'Object reference not set to an instance of an object.'
   at Scriban.Parsing.Parser.ExpectEndOfStatement(ScriptStatement statement)
   at Scriban.Parsing.Parser.ParseLiquidStatement(String identifier, ScriptStatement parent, ScriptStatement& statement, Boolean& hasEnd, Boolean& nextStatement)
   at Scriban.Parsing.Parser.TryParseStatement(ScriptStatement parent, ScriptStatement& statement, Boolean& hasEnd)
   at Scriban.Parsing.Parser.ParseBlockStatement(ScriptStatement parentStatement)
   at Scriban.Parsing.Parser.Run()
   at Scriban.Template.ParseInternal(String text, String sourceFilePath)
   at Scriban.Template.ParseLiquid(String text, String sourceFilePath, Nullable`1 parserOptions, Nullable`1 lexerOptions)

I'm using .NET Core 2.2 and the latest NuGet alpha version of Scriban (2.0.0-alpha-005).

Found via SharpFuzz.

Fixed in 2.0.0+