From 9304d34bf832465513fa753757a01f7396c54b6d Mon Sep 17 00:00:00 2001 From: mtabachenko Date: Sat, 18 Apr 2009 17:41:14 +0000 Subject: [PATCH] added parser for comma when load cheats; --- desmume/src/cheatSystem.cpp | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/desmume/src/cheatSystem.cpp b/desmume/src/cheatSystem.cpp index 724c518c3..b8e66a7d7 100644 --- a/desmume/src/cheatSystem.cpp +++ b/desmume/src/cheatSystem.cpp @@ -558,14 +558,28 @@ BOOL cheatsLoad() (buf[3] == 'o') && (buf[4] == '=') ) // Info cheat { - // TODO: parse number for comma - cheats[last].type=atoi(&buf[5]); - if (buf[6]!=',') continue; // error - cheats[last].num=atoi(&buf[7]); - if (buf[8]!=',') continue; // error - cheats[last].enabled=atoi(&buf[9]); - if (buf[10]!=',') continue; // error - cheats[last].size=atoi(&buf[11]); + u32 dstart = 5; + u32 dsize = 0; + char bf[4] = { 0 }; + + while ( (buf[dstart+dsize] != ',') && (buf[dstart+dsize]!=0)) { dsize++; }; + if (buf[dstart+dsize]==0) continue; // error + strncpy(bf, (char*)buf+dstart, dsize); + cheats[last].type=atoi(bf); + dstart += (dsize+1); dsize=0; + while ( (buf[dstart+dsize] != ',') && (buf[dstart+dsize]!=0)) { dsize++; }; + if (buf[dstart+dsize]==0) continue; // error + strncpy(bf, (char*)buf+dstart, dsize); + dstart += (dsize+1); dsize=0; + cheats[last].num=atoi(bf); + while ( (buf[dstart+dsize] != ',') && (buf[dstart+dsize]!=0)) { dsize++; }; + if (buf[dstart+dsize]==0) continue; // error + strncpy(bf, (char*)(buf+dstart), dsize); + dstart += (dsize+1); dsize=0; + cheats[last].enabled=atoi(bf); + while ( (buf[dstart+dsize] != ',') && (buf[dstart+dsize]!=0)) { dsize++; }; + strncpy(bf, (char*)buf+dstart, dsize); + cheats[last].size=atoi(bf); fgets(buf, 1024, fcheat); if ( (buf[0] == 'D') && (buf[1] == 'a') &&