From 397b4968d9f16c2ad146bd12cb757e1214f9b3fc Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Mon, 26 Sep 2011 15:15:39 +0300 Subject: AGI: Rewrote cmdVersion() to use Common::String This simplifies the code and avoids heap corruption because of the long version string --- engines/agi/op_cmd.cpp | 33 ++++++++------------------------- 1 file 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) { -- cgit v1.2.3