Skip to content

Commit d8faa08

Browse files
Fix exception with struct typed variables
Using a dynamic out parameter caused exception with struct typed variables Message: `Operator '==' cannot be applied to operands of type '<my_struct_type>' and 'NULL'` StackTrace: `at CallSite.Target(Closure , CallSite , Object , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecute2[T0,T1,TRet](CallSite site, T0 arg0, T1 arg1) at CallSite.Target(Closure , CallSite , Object , Object ) at CodingSeb.ExpressionEvaluator.ExpressionEvaluator.EvaluateVarOrFunc(String expr, String restOfExpression, Stack'1 stack, Int32& i) in [...]\ExpressionEvaluator.cs:line 1833 at CodingSeb.ExpressionEvaluator.ExpressionEvaluator.Evaluate(String expression) in [...]\ExpressionEvaluator.cs:line 1385`
1 parent ca5c6ac commit d8faa08

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

CodingSeb.ExpressionEvaluator/ExpressionEvaluator.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1830,7 +1830,7 @@ private bool EvaluateVarOrFunc(string expr, string restOfExpression, Stack<objec
18301830
{
18311831
stack.Push(varValueToPush);
18321832
}
1833-
else if ((Variables.TryGetValue(varFuncName, out dynamic cusVarValueToPush) || varFuncMatch.Groups["assignationOperator"].Success)
1833+
else if ((Variables.TryGetValue(varFuncName, out object cusVarValueToPush) || varFuncMatch.Groups["assignationOperator"].Success)
18341834
&& !varFuncMatch.Groups["inObject"].Success
18351835
&& (cusVarValueToPush == null || !TypesToBlock.Contains(cusVarValueToPush.GetType())))
18361836
{
@@ -1869,11 +1869,11 @@ private bool EvaluateVarOrFunc(string expr, string restOfExpression, Stack<objec
18691869
stack.Push(cusVarValueToPush);
18701870
}
18711871
else if (varFuncMatch.Groups["postfixOperator"].Success)
1872-
cusVarValueToPush = varFuncMatch.Groups["postfixOperator"].Value.Equals("++") ? cusVarValueToPush + 1 : cusVarValueToPush - 1;
1872+
cusVarValueToPush = varFuncMatch.Groups["postfixOperator"].Value.Equals("++") ? (dynamic)cusVarValueToPush + 1 : (dynamic)cusVarValueToPush - 1;
18731873
else if (varFuncMatch.Groups["prefixOperator"].Success)
18741874
{
18751875
stack.Pop();
1876-
cusVarValueToPush = varFuncMatch.Groups["prefixOperator"].Value.Equals("++") ? cusVarValueToPush + 1 : cusVarValueToPush - 1;
1876+
cusVarValueToPush = varFuncMatch.Groups["prefixOperator"].Value.Equals("++") ? (dynamic)cusVarValueToPush + 1 : (dynamic)cusVarValueToPush - 1;
18771877
stack.Push(cusVarValueToPush);
18781878
}
18791879
else

0 commit comments

Comments
 (0)