summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaru <haru@dotalux.com>2013-10-16 05:45:01 +0200
committerHaru <haru@dotalux.com>2013-10-16 05:49:17 +0200
commit16f6df0c89cb08e44654e3930478682dbb24b2b3 (patch)
tree6226af99f49d507c0e9d60f725dcff8c278e0b35
parent9692bc034537693d331148ae8bd15153265c6cf0 (diff)
downloadhercules-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.c4
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);