[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