[Scummvm-cvs-logs] SF.net SVN: scummvm:[45267] scummvm/trunk/engines/agi
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Tue Oct 20 14:23:21 CEST 2009
Revision: 45267
http://scummvm.svn.sourceforge.net/scummvm/?rev=45267&view=rev
Author: fingolfin
Date: 2009-10-20 12:23:21 +0000 (Tue, 20 Oct 2009)
Log Message:
-----------
AGI: Cleanup AgiEngine::agiSprintf
Modified Paths:
--------------
scummvm/trunk/engines/agi/agi.h
scummvm/trunk/engines/agi/text.cpp
Modified: scummvm/trunk/engines/agi/agi.h
===================================================================
--- scummvm/trunk/engines/agi/agi.h 2009-10-20 12:22:30 UTC (rev 45266)
+++ scummvm/trunk/engines/agi/agi.h 2009-10-20 12:23:21 UTC (rev 45267)
@@ -1000,7 +1000,6 @@
void printText2(int l, const char *msg, int foff, int xoff, int yoff, int len, int fg, int bg, bool checkerboard = false);
void blitTextbox(const char *p, int y, int x, int len);
void eraseTextbox();
- char *safeStrcat(char *s, const char *t);
void loadDict(void);
bool matchWord(void);
Modified: scummvm/trunk/engines/agi/text.cpp
===================================================================
--- scummvm/trunk/engines/agi/text.cpp 2009-10-20 12:22:30 UTC (rev 45266)
+++ scummvm/trunk/engines/agi/text.cpp 2009-10-20 12:23:21 UTC (rev 45267)
@@ -516,11 +516,9 @@
printText(x, 0, 0, _game.lineStatus, 40, STATUS_FG, STATUS_BG);
}
-char *AgiEngine::safeStrcat(char *s, const char *t) {
+static void safeStrcat(Common::String p, const char *t) {
if (t != NULL)
- strcat(s, t);
-
- return s;
+ p += t;
}
/**
@@ -530,20 +528,15 @@
* @param s string containing the format specifier
* @param n logic number
*/
-#define MAX_LEN 768
char *AgiEngine::agiSprintf(const char *s) {
- static char y[MAX_LEN];
- char x[MAX_LEN];
- char z[16], *p;
+ static char agiSprintf_buf[768];
+ Common::String p;
+ char z[16];
debugC(3, kDebugLevelText, "logic %d, '%s'", _game.lognum, s);
- p = x;
- for (*p = 0; *s;) {
+ while (*s) {
switch (*s) {
- case '\\':
- s++;
- goto literal;
case '%':
s++;
switch (*s++) {
@@ -591,27 +584,27 @@
case 'm':
i = strtoul(s, NULL, 10) - 1;
if (_game.logics[_game.lognum].numTexts > i)
- safeStrcat(p, agiSprintf(_game. logics[_game.lognum].texts[i]));
+ safeStrcat(p, agiSprintf(_game.logics[_game.lognum].texts[i]));
break;
}
while (*s >= '0' && *s <= '9')
s++;
- while (*p)
- p++;
break;
+ case '\\':
+ s++;
+ // FALL THROUGH
+
default:
-literal:
- assert(p < x + MAX_LEN);
- *p++ = *s++;
- *p = 0;
+ p += *s++;
break;
}
}
- strcpy(y, x);
- return y;
+ assert(sizeof(agiSprintf_buf) < p.size());
+ strcpy(agiSprintf_buf, p.c_str());
+ return agiSprintf_buf;
}
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list