1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-03-29 04:20:29 +00:00

Allow garbage integer argument for addSpell (Fixes #1539)

This commit is contained in:
scrawl 2014-06-23 22:02:22 +02:00
parent 320ab1b2c1
commit 750d8b5589
3 changed files with 14 additions and 10 deletions

View File

@ -775,7 +775,7 @@ namespace Compiler
{ {
parser.reset(); parser.reset();
if (optional) if (optional || *iter == 'X')
parser.setOptional (true); parser.setOptional (true);
scanner.scan (parser); scanner.scan (parser);
@ -783,17 +783,20 @@ namespace Compiler
if (optional && parser.isEmpty()) if (optional && parser.isEmpty())
break; break;
std::vector<Interpreter::Type_Code> tmp; if (*iter != 'X')
{
std::vector<Interpreter::Type_Code> tmp;
char type = parser.append (tmp); char type = parser.append (tmp);
if (type!=*iter) if (type!=*iter)
Generator::convert (tmp, type, *iter); Generator::convert (tmp, type, *iter);
stack.push (tmp); stack.push (tmp);
if (optional) if (optional)
++optionalCount; ++optionalCount;
}
} }
} }

View File

@ -20,7 +20,8 @@ namespace Compiler
l - Integer <BR> l - Integer <BR>
s - Short <BR> s - Short <BR>
S - String, case preserved <BR> S - String, case preserved <BR>
x - Optional, ignored argument x - Optional, ignored string argument
X - Optional, ignored integer argument
**/ **/
typedef std::string ScriptArgs; typedef std::string ScriptArgs;

View File

@ -405,7 +405,7 @@ namespace Compiler
extensions.registerInstruction ("setpccrimelevel", "f", opcodeSetPCCrimeLevel); extensions.registerInstruction ("setpccrimelevel", "f", opcodeSetPCCrimeLevel);
extensions.registerInstruction ("modpccrimelevel", "f", opcodeModPCCrimeLevel); extensions.registerInstruction ("modpccrimelevel", "f", opcodeModPCCrimeLevel);
extensions.registerInstruction ("addspell", "cx", opcodeAddSpell, opcodeAddSpellExplicit); extensions.registerInstruction ("addspell", "cxX", opcodeAddSpell, opcodeAddSpellExplicit);
extensions.registerInstruction ("removespell", "c", opcodeRemoveSpell, extensions.registerInstruction ("removespell", "c", opcodeRemoveSpell,
opcodeRemoveSpellExplicit); opcodeRemoveSpellExplicit);
extensions.registerInstruction ("removespelleffects", "c", opcodeRemoveSpellEffects, extensions.registerInstruction ("removespelleffects", "c", opcodeRemoveSpellEffects,