From 59b0d15915158b36a3ee093695c68020fbfda15b Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Mon, 23 Jan 2023 21:19:51 +0000 Subject: [PATCH] Fixed a pattern with parsing identifiers --- repl/lib_runner.c | 55 +++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 31 deletions(-) diff --git a/repl/lib_runner.c b/repl/lib_runner.c index e25ea7b..6f776e4 100644 --- a/repl/lib_runner.c +++ b/repl/lib_runner.c @@ -242,10 +242,10 @@ static int nativeRunScript(Interpreter* interpreter, LiteralArray* arguments) { //get the runner object Literal runnerLiteral = popLiteralArray(arguments); - Literal idn = runnerLiteral; - if (parseIdentifierToValue(interpreter, &runnerLiteral)) { - freeLiteral(idn); + Literal runnerIdn = runnerLiteral; + if (IS_IDENTIFIER(runnerLiteral) && parseIdentifierToValue(interpreter, &runnerLiteral)) { + freeLiteral(runnerIdn); } if (OPAQUE_TAG(runnerLiteral) != OPAQUE_TAG_RUNNER) { @@ -285,16 +285,14 @@ static int nativeGetScriptVar(Interpreter* interpreter, LiteralArray* arguments) Literal varName = popLiteralArray(arguments); Literal runnerLiteral = popLiteralArray(arguments); - if (IS_IDENTIFIER(varName)) { - Literal idn = varName; - parseIdentifierToValue(interpreter, &varName); - freeLiteral(idn); + Literal varNameIdn = varName; + if (IS_IDENTIFIER(varName) && parseIdentifierToValue(interpreter, &varName)) { + freeLiteral(varNameIdn); } - if (IS_IDENTIFIER(runnerLiteral)) { - Literal idn = runnerLiteral; - parseIdentifierToValue(interpreter, &runnerLiteral); - freeLiteral(idn); + Literal runnerIdn = runnerLiteral; + if (IS_IDENTIFIER(runnerLiteral) && parseIdentifierToValue(interpreter, &runnerLiteral)) { + freeLiteral(runnerIdn); } if (OPAQUE_TAG(runnerLiteral) != OPAQUE_TAG_RUNNER) { @@ -360,16 +358,14 @@ static int nativeCallScriptFn(Interpreter* interpreter, LiteralArray* arguments) Literal varName = popLiteralArray(arguments); Literal runnerLiteral = popLiteralArray(arguments); - if (IS_IDENTIFIER(varName)) { - Literal idn = varName; - parseIdentifierToValue(interpreter, &varName); - freeLiteral(idn); + Literal varNameIdn = varName; + if (IS_IDENTIFIER(varName) && parseIdentifierToValue(interpreter, &varName)) { + freeLiteral(varNameIdn); } - if (IS_IDENTIFIER(runnerLiteral)) { - Literal idn = runnerLiteral; - parseIdentifierToValue(interpreter, &runnerLiteral); - freeLiteral(idn); + Literal runnerIdn = runnerLiteral; + if (IS_IDENTIFIER(runnerLiteral) && parseIdentifierToValue(interpreter, &runnerLiteral)) { + freeLiteral(runnerIdn); } if (OPAQUE_TAG(runnerLiteral) != OPAQUE_TAG_RUNNER) { @@ -436,10 +432,9 @@ static int nativeResetScript(Interpreter* interpreter, LiteralArray* arguments) //get the runner object Literal runnerLiteral = popLiteralArray(arguments); - if (IS_IDENTIFIER(runnerLiteral)) { - Literal idn = runnerLiteral; - parseIdentifierToValue(interpreter, &runnerLiteral); - freeLiteral(idn); + Literal runnerIdn = runnerLiteral; + if (IS_IDENTIFIER(runnerLiteral) && parseIdentifierToValue(interpreter, &runnerLiteral)) { + freeLiteral(runnerIdn); } if (OPAQUE_TAG(runnerLiteral) != OPAQUE_TAG_RUNNER) { @@ -473,10 +468,9 @@ static int nativeFreeScript(Interpreter* interpreter, LiteralArray* arguments) { //get the runner object Literal runnerLiteral = popLiteralArray(arguments); - if (IS_IDENTIFIER(runnerLiteral)) { - Literal idn = runnerLiteral; - parseIdentifierToValue(interpreter, &runnerLiteral); - freeLiteral(idn); + Literal runnerIdn = runnerLiteral; + if (IS_IDENTIFIER(runnerLiteral) && parseIdentifierToValue(interpreter, &runnerLiteral)) { + freeLiteral(runnerIdn); } if (OPAQUE_TAG(runnerLiteral) != OPAQUE_TAG_RUNNER) { @@ -508,10 +502,9 @@ static int nativeCheckScriptDirty(Interpreter* interpreter, LiteralArray* argume //get the runner object Literal runnerLiteral = popLiteralArray(arguments); - if (IS_IDENTIFIER(runnerLiteral)) { - Literal idn = runnerLiteral; - parseIdentifierToValue(interpreter, &runnerLiteral); - freeLiteral(idn); + Literal runnerIdn = runnerLiteral; + if (IS_IDENTIFIER(runnerLiteral) && parseIdentifierToValue(interpreter, &runnerLiteral)) { + freeLiteral(runnerIdn); } if (OPAQUE_TAG(runnerLiteral) != OPAQUE_TAG_RUNNER) {