aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2011-09-26 15:15:39 +0300
committerFilippos Karapetis2011-09-26 15:15:39 +0300
commit397b4968d9f16c2ad146bd12cb757e1214f9b3fc (patch)
tree550b2a2eaed73c577db88a6c4612e95b4fe8ad50 /engines
parentcf071732b12c5e8b27166c1841709cd2b3089a5b (diff)
downloadscummvm-rg350-397b4968d9f16c2ad146bd12cb757e1214f9b3fc.tar.gz
scummvm-rg350-397b4968d9f16c2ad146bd12cb757e1214f9b3fc.tar.bz2
scummvm-rg350-397b4968d9f16c2ad146bd12cb757e1214f9b3fc.zip
AGI: Rewrote cmdVersion() to use Common::String
This simplifies the code and avoids heap corruption because of the long version string
Diffstat (limited to 'engines')
-rw-r--r--engines/agi/op_cmd.cpp33
1 files changed, 8 insertions, 25 deletions
diff --git a/engines/agi/op_cmd.cpp b/engines/agi/op_cmd.cpp
index 15f7ac6163..07db0ae750 100644
--- a/engines/agi/op_cmd.cpp
+++ b/engines/agi/op_cmd.cpp
@@ -1259,7 +1259,6 @@ void cmdSetMenuItem(AgiGame *state, uint8 *p) {
}
void cmdVersion(AgiGame *state, uint8 *p) {
- char verMsg[64];
char ver2Msg[] =
"\n"
" \n\n"
@@ -1269,33 +1268,17 @@ void cmdVersion(AgiGame *state, uint8 *p) {
" \n\n"
" Emulating AGI v%x.002.%03x\n";
// no Sierra as it wraps textbox
- char *r, *q;
- int ver, maj, min;
- char msg[256];
- int gap;
- int len;
- sprintf(verMsg, TITLE " v%s", gScummVMVersion);
-
- ver = getVersion();
- maj = (ver >> 12) & 0xf;
- min = ver & 0xfff;
-
- q = maj == 2 ? ver2Msg : ver3Msg;
- r = strchr(q + 1, '\n');
-
- // insert our version into the other version
- len = strlen(verMsg);
- gap = r - q;
+ Common::String verMsg = TITLE " v%s";
+
+ int ver = getVersion();
+ int maj = (ver >> 12) & 0xf;
+ int min = ver & 0xfff;
- if (gap < 0)
- gap = 0;
- else
- gap = (gap - len) / 2;
+ verMsg += (maj == 2 ? ver2Msg : ver3Msg);
+ verMsg = Common::String::format(verMsg.c_str(), gScummVMVersion, maj, min);
- strncpy(q + 1 + gap, verMsg, strlen(verMsg));
- sprintf(msg, q, maj, min);
- state->_vm->messageBox(msg);
+ state->_vm->messageBox(verMsg.c_str());
}
void cmdConfigureScreen(AgiGame *state, uint8 *p) {