working test without scanstring changes
This commit is contained in:
marauder2k7 2024-06-16 23:05:42 +01:00
parent d8411b4a58
commit 0d4c335231
4 changed files with 12 additions and 12 deletions

View file

@ -245,16 +245,7 @@ public:
if (type == ConsoleValueType::cvSTEntry) if (type == ConsoleValueType::cvSTEntry)
return s == StringTable->EmptyString() ? 0 : dAtoi(s); return s == StringTable->EmptyString() ? 0 : dAtoi(s);
if (type == ConsoleValueType::cvString) if (type == ConsoleValueType::cvString)
{ return dStrcmp(s, "") == 0 ? 0 : dAtoi(s);
if (dStricmp(s, "false") == 0) {
return 0;
}
else if (dStricmp(s, "true") == 0) {
return 1;
}
return dIsdigit(*s) ? dAtoi(s) : s == StringTable->EmptyString() ? 0 : 1;
}
return dAtoi(getConsoleData()); return dAtoi(getConsoleData());
} }

View file

@ -211,10 +211,10 @@ U32 IfStmtNode::compileStmt(CodeStream& codeStream, U32 ip)
integer = false; integer = false;
} }
if (testType == TypeReqString) if (testType == TypeReqString || testType == TypeReqNone)
{ {
ip = testExpr->compile(codeStream, ip, TypeReqString); ip = testExpr->compile(codeStream, ip, TypeReqString);
codeStream.emit(OP_JMPIFNOT); codeStream.emit(OP_JMPSTRING);
} }
else else
{ {

View file

@ -1163,6 +1163,14 @@ Con::EvalResult CodeBlock::exec(U32 ip, const char* functionName, Namespace* thi
} }
ip = code[ip]; ip = code[ip];
break; break;
case OP_JMPSTRING:
if (stack[_STK--].getBool())
{
ip++;
break;
}
ip = code[ip];
break;
case OP_JMPIFNOT_NP: case OP_JMPIFNOT_NP:
if (stack[_STK].getInt()) if (stack[_STK].getInt())
{ {

View file

@ -64,6 +64,7 @@ namespace Compiler
OP_JMPIFNOT, OP_JMPIFNOT,
OP_JMPIFF, OP_JMPIFF,
OP_JMPIF, OP_JMPIF,
OP_JMPSTRING,
OP_JMPIFNOT_NP, OP_JMPIFNOT_NP,
OP_JMPIF_NP, // 10 OP_JMPIF_NP, // 10
OP_JMP, OP_JMP,