diff options
author | ai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-02-06 01:45:10 +0000 |
---|---|---|
committer | ai4rei <ai4rei@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2011-02-06 01:45:10 +0000 |
commit | 171066c9e4c7b1c26c6f99597551692ca00c6e0d (patch) | |
tree | a01d2e72a163f7c00a48d97c4618f3b3b7a20217 /src/map/npc.c | |
parent | 97e99cabe32457b9df261ea64fa835c2f8850d2e (diff) | |
download | hercules-171066c9e4c7b1c26c6f99597551692ca00c6e0d.tar.gz hercules-171066c9e4c7b1c26c6f99597551692ca00c6e0d.tar.bz2 hercules-171066c9e4c7b1c26c6f99597551692ca00c6e0d.tar.xz hercules-171066c9e4c7b1c26c6f99597551692ca00c6e0d.zip |
* Fixed NPCs with closing parenthesis in their name could not be duplicated (bugreport:3235).
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@14695 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/npc.c')
-rw-r--r-- | src/map/npc.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/map/npc.c b/src/map/npc.c index 1bf5bd312..bc2018459 100644 --- a/src/map/npc.c +++ b/src/map/npc.c @@ -2263,6 +2263,7 @@ const char* npc_parse_duplicate(char* w1, char* w2, char* w3, char* w4, const ch char srcname[128]; int i; const char* end; + size_t length; int src_id; int type; @@ -2270,12 +2271,16 @@ const char* npc_parse_duplicate(char* w1, char* w2, char* w3, char* w4, const ch struct npc_data* dnd; end = strchr(start,'\n'); + length = strlen(w2); + // get the npc being duplicated - if( sscanf(w2,"duplicate(%127[^)])",srcname) != 1 ) - { + if( w2[length-1] != ')' || length <= 11 || length-11 >= sizeof(srcname) ) + {// does not match 'duplicate(%127s)', name is empty or too long ShowError("npc_parse_script: bad duplicate name in file '%s', line '%d' : %s\n", filepath, strline(buffer,start-buffer), w2); return end;// next line, try to continue } + safestrncpy(srcname, w2+10, length-10); + dnd = npc_name2id(srcname); if( dnd == NULL) { ShowError("npc_parse_script: original npc not found for duplicate in file '%s', line '%d' : %s\n", filepath, strline(buffer,start-buffer), srcname); |