From 1f8c922a8ffd8fb216c050b86fdbc4040e5780f6 Mon Sep 17 00:00:00 2001 From: ultramage Date: Sun, 8 Jul 2007 19:24:48 +0000 Subject: * Fixed typo in 'deletearray' messing up the script engine * Added a check to pc_skill() to prevent crashes on unknown skill ids git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10868 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/pc.c | 10 ++++++++-- src/map/script.c | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src/map') diff --git a/src/map/pc.c b/src/map/pc.c index 79a898cff..49d880767 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2494,11 +2494,17 @@ int pc_skill(TBL_PC* sd, int id, int level, int flag) { nullpo_retr(0, sd); - if( level > MAX_SKILL_LEVEL ){ + if( id <= 0 || id >= MAX_SKILL || skill_db[id].name == NULL) { if( battle_config.error_log ) - ShowError("pc_skill: Skill level %d too high. Max lv supported is MAX_SKILL_LEVEL (%d)\n", level, MAX_SKILL_LEVEL); + ShowError("pc_skill: Skill with id %d does not exist in the skill database\n", id); return 0; } + if( level > MAX_SKILL_LEVEL ) { + if( battle_config.error_log ) + ShowError("pc_skill: Skill level %d too high. Max lv supported is %d\n", level, MAX_SKILL_LEVEL); + return 0; + } + switch( flag ){ case 0: //Set skill data overwriting whatever was there before. sd->status.skill[id].id = id; diff --git a/src/map/script.c b/src/map/script.c index cfe0ce1b0..a4e348083 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -5758,12 +5758,12 @@ BUILDIN_FUNC(deletearray) if( is_string_variable(name) ) { for( ; start < end; ++start ) - set_reg(st, sd, reference_uid(id, start), name, (void*)0, reference_getref(data)); + set_reg(st, sd, reference_uid(id, start), name, (void *)"", reference_getref(data)); } else { for( ; start < end; ++start ) - set_reg(st, sd, reference_uid(id, start), name, (void *)"", reference_getref(data)); + set_reg(st, sd, reference_uid(id, start), name, (void*)0, reference_getref(data)); } return 0; } -- cgit v1.2.3-70-g09d2