From 4c1423ea04f98647576a952be6adbc1b0d8ce2cf Mon Sep 17 00:00:00 2001 From: gepard1984 Date: Tue, 14 Feb 2012 14:46:11 +0000 Subject: Fixed `strtolower` and `strtoupper` script functions (bug:5331). git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@15580 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/script.c | 41 ++++++++++++++--------------------------- 1 file changed, 14 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/src/map/script.c b/src/map/script.c index 705eb041b..f26d60b12 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -12581,15 +12581,10 @@ BUILDIN_FUNC(setchar) const char *str = script_getstr(st,2); const char *c = script_getstr(st,3); int index = script_getnum(st,4); - char *output; - size_t len = strlen(str); + char *output = aStrdup(str); - output = (char*)aMallocA(len + 1); - memcpy(output, str, len); - output[len] = '\0'; - - if(index >= 0 && index < len) - output[index] = c[0]; + if(index >= 0 && index < strlen(output)) + output[index] = *c; script_pushstr(st, output); return 0; @@ -12634,9 +12629,7 @@ BUILDIN_FUNC(delchar) if(index < 0 || index > len) { //return original - ++len; - output = (char*)aMallocA(len); - memcpy(output, str, len); + output = aStrdup(str); script_pushstr(st, output); return 0; } @@ -12656,16 +12649,13 @@ BUILDIN_FUNC(delchar) BUILDIN_FUNC(strtoupper) { const char *str = script_getstr(st,2); - char *output; - int i = 0; - - output = (char*)aMallocA(strlen(str) + 1); + char *output = aStrdup(str); + char *cursor = output; - while(str[i] != '\0') { - i = i + 1; - output[i] = TOUPPER(str[i]); + while (*cursor != '\0') { + *cursor = TOUPPER(*cursor); + cursor++; } - output[i] = '\0'; script_pushstr(st, output); return 0; @@ -12677,16 +12667,13 @@ BUILDIN_FUNC(strtoupper) BUILDIN_FUNC(strtolower) { const char *str = script_getstr(st,2); - char *output; - int i = 0; - - output = (char*)aMallocA(strlen(str) + 1); + char *output = aStrdup(str); + char *cursor = output; - while(str[i] != '\0') { - i = i + 1; - output[i] = TOLOWER(str[i]); + while (*cursor != '\0') { + *cursor = TOLOWER(*cursor); + cursor++; } - output[i] = '\0'; script_pushstr(st, output); return 0; -- cgit v1.2.3-70-g09d2