diff options
author | Haru <haru@dotalux.com> | 2013-10-16 05:45:01 +0200 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2013-10-16 05:49:17 +0200 |
commit | 16f6df0c89cb08e44654e3930478682dbb24b2b3 (patch) | |
tree | 6226af99f49d507c0e9d60f725dcff8c278e0b35 | |
parent | 9692bc034537693d331148ae8bd15153265c6cf0 (diff) | |
download | hercules-16f6df0c89cb08e44654e3930478682dbb24b2b3.tar.gz hercules-16f6df0c89cb08e44654e3930478682dbb24b2b3.tar.bz2 hercules-16f6df0c89cb08e44654e3930478682dbb24b2b3.tar.xz hercules-16f6df0c89cb08e44654e3930478682dbb24b2b3.zip |
Fixed a variable going out of scope causing an invalid pointer access
- Follow-up to 20bdc01fa687b174a732be4483ddea4982d67ce9
- The issue was found thanks to gcc 4.7.3 on a 32 bit linux system,
where the issue became evident and caused all sorts of parsing errors
on argument-less command functions such as 'end', 'close', 'next', etc
- Special thanks to Ind for quickly pointing me to the right place!
Signed-off-by: Haru <haru@dotalux.com>
-rw-r--r-- | src/map/script.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/map/script.c b/src/map/script.c index dbd64536e..deafe83d6 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -610,16 +610,16 @@ const char* parse_callfunc(const char* p, int require_paren, int is_custom) { const char *p2; char *arg = NULL; + char null_arg = '\0'; int func; func = script->add_word(p); if( script->str_data[func].type == C_FUNC ){ - char argT = 0; // buildin function script->addl(func); script->addc(C_ARG); arg = script->buildin[script->str_data[func].val]; - if( !arg ) arg = &argT; + if( !arg ) arg = &null_arg; // Use a dummy, null string } else if( script->str_data[func].type == C_USERFUNC || script->str_data[func].type == C_USERFUNC_POS ){ // script defined function script->addl(script->buildin_callsub_ref); |