From 0b2b78389bbb58215f3c2a926dec32922c512533 Mon Sep 17 00:00:00 2001 From: flowtron Date: Sat, 2 Apr 2011 15:39:35 +0000 Subject: [PATCH] fix substr COMMAND git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@6196 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/command.cpp | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/source/src/command.cpp b/source/src/command.cpp index dda0cd43..1585ebcd 100644 --- a/source/src/command.cpp +++ b/source/src/command.cpp @@ -1214,20 +1214,21 @@ void timestring_() int millis_() { extern int totalmillis; return totalmillis; } void strlen_(char *s) { string r; formatstring(r)("%d", strlen(s)); result(r); } -void substr_(char *s, char *a, char *b) +void substr_(char *fs, char *pa, char *pb) { - int ia = atoi(a); - int ib = atoi(b); - string q; - string r; - r[0] = '\0'; + int ia = atoi(pa); + int ib = atoi(pb); + string subq; + string subr; + subr[0] = '\0'; if(ia>=0) { - if(ib<=0 && ib>=strlen(s)) ib = strlen(s)-1; - copystring(q, s + ia); - strncpy(r, q, ib - ia); + if(ib<=0 || ib>=(int)strlen(fs)) ib = strlen(fs); + copystring(subq, fs + ia); + strncpy(subr, subq, ib - ia); } - result(r); + subr[ib-ia] = '\0'; + result(subr); } void l0(int p, int v) { string f; string r; formatstring(f)("%%0%dd", p); formatstring(r)(f, v); result(r); }