[Scummvm-git-logs] scummvm master -> fae2a7f93dd9b283459f9c7fe332ffe34b960457

sev- noreply at scummvm.org
Sat Aug 12 22:53:56 UTC 2023


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
8bff50d668 WATCHMAKER: sprintf -> snprintf in some places
3271c8af71 WATCHMAKER: Add missing override keywords
fae2a7f93d WATCHMAKER: Eliminate sprintf() and strcpy()


Commit: 8bff50d66874ce68d2e3b65de628077741badc64
    https://github.com/scummvm/scummvm/commit/8bff50d66874ce68d2e3b65de628077741badc64
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-08-13T00:38:24+02:00

Commit Message:
WATCHMAKER: sprintf -> snprintf in some places

Changed paths:
    engines/watchmaker/ll/ll_util.cpp
    engines/watchmaker/saveload.cpp


diff --git a/engines/watchmaker/ll/ll_util.cpp b/engines/watchmaker/ll/ll_util.cpp
index 381e3791144..422f2d28a77 100644
--- a/engines/watchmaker/ll/ll_util.cpp
+++ b/engines/watchmaker/ll/ll_util.cpp
@@ -19,10 +19,6 @@
  *
  */
 
-#define FORBIDDEN_SYMBOL_EXCEPTION_strcpy
-#define FORBIDDEN_SYMBOL_EXCEPTION_sprintf
-#define FORBIDDEN_SYMBOL_EXCEPTION_vsprintf
-
 #include "watchmaker/ll/ll_util.h"
 #include "watchmaker/ll/ll_anim.h"
 #include "watchmaker/ll/ll_diary.h"
@@ -175,22 +171,22 @@ int32 WhatObj(WGame &game, int32 mx, int32 my, uint8 op) {
 	memset(ObjectUnderCursor, 0, 400);
 	if (CurMesh || (FloorHit)) {
 		if (!FloorHit) {
-			strcpy(ObjectUnderCursor, CurMesh->name.c_str());
+			Common::strlcpy(ObjectUnderCursor, CurMesh->name.c_str(), 400);
 			ret = LinkObjToMesh(game, CurMesh, op);
 			if (NextPortalObj)
-				sprintf(ObjectUnderCursor, "NextPortalObj -> %s", CurMesh->name.c_str());
+				snprintf(ObjectUnderCursor, 400, "NextPortalObj -> %s", CurMesh->name.c_str());
 
 			mPos.x = CurMesh->Intersection.x;
 			mPos.y = CurMesh->Intersection.y;
 			mPos.z = CurMesh->Intersection.z;
 		} else {
 			if (CurMesh)
-				sprintf(ObjectUnderCursor, "Floor Hit -> %s", CurMesh->name.c_str());
+				snprintf(ObjectUnderCursor, 400, "Floor Hit -> %s", CurMesh->name.c_str());
 			else
-				strcpy(ObjectUnderCursor, "Floor Hit");
+				Common::strlcpy(ObjectUnderCursor, "Floor Hit", 400);
 			LinkObjToMesh(game, CurMesh, op);
 			if (NextPortalObj)
-				sprintf(ObjectUnderCursor, "NextPortalObj -> Floor Hit -> %s", CurMesh->name.c_str());
+				snprintf(ObjectUnderCursor, 400, "NextPortalObj -> Floor Hit -> %s", CurMesh->name.c_str());
 
 			mPos.x = FloorHitCoords.x;
 			mPos.y = FloorHitCoords.y;
@@ -238,7 +234,7 @@ int32 CreateTooltipBitmap(Renderer &renderer, char *tooltip, FontColor color, ui
 	surf = rCreateSurface(dimx, dimy, 0);
 	if (surf <= 0) return -1;
 
-	strcpy(info, "tooltip: ");
+	Common::strlcpy(info, "tooltip: ", 400);
 	strncat(info, tooltip, 15);
 	rSetBitmapName(surf, info);
 	renderer.clearBitmap(surf, 0, 0, dimx, dimy, 18, 18, 18);          // Bordino nero
@@ -673,7 +669,7 @@ void DebugVideo(Renderer &renderer, int32 px, int32 py, const char *format, ...)
 	va_list args;
 
 	va_start(args, format);
-	vsprintf(str, format, args);
+	vsnprintf(str, 500, format, args);
 	va_end(args);
 
 	renderer._2dStuff.displayDDText(str, FontKind::Standard, WHITE_FONT, px, py, 0, 0, 0, 0);
diff --git a/engines/watchmaker/saveload.cpp b/engines/watchmaker/saveload.cpp
index 39d58d97b3f..8c631011237 100644
--- a/engines/watchmaker/saveload.cpp
+++ b/engines/watchmaker/saveload.cpp
@@ -19,7 +19,6 @@
  *
  */
 
-#define FORBIDDEN_SYMBOL_EXCEPTION_sprintf
 #define FORBIDDEN_SYMBOL_EXCEPTION_strcpy
 
 #include "watchmaker/saveload.h"
@@ -191,7 +190,7 @@ bool DataSave(const char *SaveName, uint8 slot) {
 	    }
 	#endif
 	*/
-	sprintf(str, "%sWm%#02d.sav", WmSavesDir, slot);
+	snprintf(str, T3D_NAMELEN, "%sWm%#02d.sav", WmSavesDir, slot);
 
 	if ((fhs = fopen(str, "wb")) == nullptr)
 		return FALSE;
@@ -373,7 +372,7 @@ bool DataLoad(WGame &game, const Common::String &FileName, uint8 slot) {
 	if (!FileName.empty())
 		strcpy(str, FileName.c_str());
 	else
-		sprintf(str, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), slot);
+		snprintf(str, T3D_NAMELEN, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), slot);
 
 	auto stream = openFile(FileName);
 	if (!stream) {


Commit: 3271c8af71eccfd6dcfccb8b049cacf23810158a
    https://github.com/scummvm/scummvm/commit/3271c8af71eccfd6dcfccb8b049cacf23810158a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-08-13T00:43:17+02:00

Commit Message:
WATCHMAKER: Add missing override keywords

Changed paths:
    engines/watchmaker/3d/loader.cpp


diff --git a/engines/watchmaker/3d/loader.cpp b/engines/watchmaker/3d/loader.cpp
index c67126f417d..6f1b5c086aa 100644
--- a/engines/watchmaker/3d/loader.cpp
+++ b/engines/watchmaker/3d/loader.cpp
@@ -135,7 +135,7 @@ public:
 	};
 	_t3dLOADLIST t3dLoadList[MAX_T3D_LOADLIST_ITEMS] = {};
 
-	void addToLoadList(t3dMESH *m, const Common::String &pname, uint32 _LoaderFlags) {
+	void addToLoadList(t3dMESH *m, const Common::String &pname, uint32 _LoaderFlags) override {
 		if (!pname.empty()) {
 			int32 a;
 			for (a = 0; a < MAX_T3D_LOADLIST_ITEMS; a++) {
@@ -203,7 +203,7 @@ public:
 		return nullptr;
 	}
 
-	t3dMESH *linkMeshToStr(Init &init, const Common::String &str) {
+	t3dMESH *linkMeshToStr(Init &init, const Common::String &str) override {
 		if (str.empty()) return nullptr;
 
 		//	Cerca tra le camere


Commit: fae2a7f93dd9b283459f9c7fe332ffe34b960457
    https://github.com/scummvm/scummvm/commit/fae2a7f93dd9b283459f9c7fe332ffe34b960457
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-08-13T00:53:41+02:00

Commit Message:
WATCHMAKER: Eliminate sprintf() and strcpy()

Changed paths:
    engines/watchmaker/classes/do_sound.cpp
    engines/watchmaker/classes/do_string.cpp
    engines/watchmaker/init/nl_parse.cpp
    engines/watchmaker/t2d/t2d.cpp


diff --git a/engines/watchmaker/classes/do_sound.cpp b/engines/watchmaker/classes/do_sound.cpp
index 664516edebb..388969f32ca 100644
--- a/engines/watchmaker/classes/do_sound.cpp
+++ b/engines/watchmaker/classes/do_sound.cpp
@@ -19,8 +19,6 @@
  *
  */
 
-#define FORBIDDEN_SYMBOL_EXCEPTION_sprintf
-
 #include "watchmaker/classes/do_sound.h"
 #include "watchmaker/utils.h"
 #include "watchmaker/types.h"
@@ -87,7 +85,7 @@ bool StartSpeech(WGame &game, int32 n) {
 
 	if (game.gameOptions.speech_on == FALSE) return true;
 
-	sprintf(CurSound.name, "%ss%04d.wav", game.workDirs._speechDir.c_str(), n);
+	snprintf(CurSound.name, SOUND_NAME_LEN, "%ss%04d.wav", game.workDirs._speechDir.c_str(), n);
 
 	CurSound.lIndex = MAX_SOUNDS + n;
 	CurSound.dwLooped = FALSE;
@@ -140,7 +138,7 @@ bool StartSound(WGame &game, int32 index) {
 
 	if (game.gameOptions.sound_on == FALSE) return TRUE;
 
-	sprintf(CurSound.name, "%s%s", game.workDirs._wavDir.c_str(), init.Sound[index].name);
+	snprintf(CurSound.name, SOUND_NAME_LEN, "%s%s", game.workDirs._wavDir.c_str(), init.Sound[index].name);
 	CurSound.lIndex = index;
 	CurSound.dwLooped = (init.Sound[index].flags & SOUND_LOOP);
 	CurSound.flMinDistance = init.Sound[index].MinDist * METER2UNIT;
@@ -269,7 +267,7 @@ bool StartStepSound(WGame &game, t3dV3F *pos, uint8 side) {
 	if (index == wNULL)
 		return FALSE;
 
-	sprintf(CurSound.name, "%s%s", game.workDirs._wavDir.c_str(), init.Sound[index].name);
+	snprintf(CurSound.name, SOUND_NAME_LEN, "%s%s", game.workDirs._wavDir.c_str(), init.Sound[index].name);
 	CurSound.lIndex = index;
 	CurSound.dwLooped = (init.Sound[index].flags & SOUND_LOOP);
 	CurSound.flMinDistance = init.Sound[index].MinDist * METER2UNIT;
@@ -334,7 +332,7 @@ bool PlayMusic(int32 index, uint32 FadeOutTime, uint32 FadeInTime) {
 	        (Music[index].vol[CurSubMusic] != mGetAllVolume())) {
 		if (!mSetAllVolume((BYTE)Music[index].vol[CurSubMusic])) return FALSE;
 	}
-	sprintf(FileName, "%s%s", WmMidiDir, Music[index].name[CurSubMusic]);
+	snprintf(FileName, MAX_PATH, "%s%s", WmMidiDir, Music[index].name[CurSubMusic]);
 	if (!mLoadMusic(FileName)) {
 		if (CurPlayIndex == -1) return TRUE;
 		mInstantFadeOut(NULL, FadeOutTime);
diff --git a/engines/watchmaker/classes/do_string.cpp b/engines/watchmaker/classes/do_string.cpp
index b2ff6873733..88acedffc8d 100644
--- a/engines/watchmaker/classes/do_string.cpp
+++ b/engines/watchmaker/classes/do_string.cpp
@@ -19,10 +19,6 @@
  *
  */
 
-#define FORBIDDEN_SYMBOL_EXCEPTION_strcat
-#define FORBIDDEN_SYMBOL_EXCEPTION_strcpy
-#define FORBIDDEN_SYMBOL_EXCEPTION_sprintf
-
 #include "watchmaker/classes/do_string.h"
 #include "watchmaker/globvar.h"
 #include "watchmaker/message.h"
@@ -213,13 +209,13 @@ void doString(WGame &game) {
 void ShowObjName(Init &init, int32 ob) {
 	if (bUseWith & UW_ON) {
 		if (bUseWith & UW_USEDI)
-			sprintf(UWStr, "Use %s with ", ObjName[init.InvObj[UseWith[USED]].name]);
+			snprintf(UWStr, 100, "Use %s with ", ObjName[init.InvObj[UseWith[USED]].name]);
 		else
-			sprintf(UWStr, "Use %s with ", ObjName[init.Obj[UseWith[USED]].name]);
+			snprintf(UWStr, 100, "Use %s with ", ObjName[init.Obj[UseWith[USED]].name]);
 
 		if ((UseWith[USED] != ob) || (bUseWith & UW_USEDI))
 			if (ObjName[init.Obj[ob].name] != nullptr)
-				strcat(UWStr, ObjName[init.Obj[ob].name]);
+				Common::strlcat(UWStr, ObjName[init.Obj[ob].name], 100);
 		Text(DEFAULT_TEXT_X, DEFAULT_TEXT_Y, DEFAULT_TEXT_DX, UWStr);
 	} else if (!ob || !init.Obj[ob].name)
 		ClearText();
@@ -233,13 +229,13 @@ void ShowObjName(Init &init, int32 ob) {
 void ShowInvObjName(Init &init, int32 obj) {
 	if (bUseWith & UW_ON) {
 		if (bUseWith & UW_USEDI)
-			sprintf(UWStr, "Use %s with ", ObjName[init.InvObj[UseWith[USED]].name]);
+			snprintf(UWStr, 100, "Use %s with ", ObjName[init.InvObj[UseWith[USED]].name]);
 		else
-			sprintf(UWStr, "Use %s with ", ObjName[init.Obj[UseWith[USED]].name]);
+			snprintf(UWStr, 100, "Use %s with ", ObjName[init.Obj[UseWith[USED]].name]);
 
 		if ((UseWith[USED] != obj) || !(bUseWith & UW_USEDI))
 			if (ObjName[init.InvObj[obj].name] != nullptr)
-				strcat(UWStr, ObjName[init.InvObj[obj].name]);
+				Common::strlcat(UWStr, ObjName[init.InvObj[obj].name], 100);
 		Text(DEFAULT_TEXT_X, DEFAULT_TEXT_Y, DEFAULT_TEXT_DX, UWStr);
 	} else //if ( !obj )
 		ClearText();
@@ -247,4 +243,4 @@ void ShowInvObjName(Init &init, int32 obj) {
 //		Text( 100, d3dappi.szClient.cy-30, ObjName[InvObj[obj].name] );
 }
 
-} // End of namespace Watchmaker
\ No newline at end of file
+} // End of namespace Watchmaker
diff --git a/engines/watchmaker/init/nl_parse.cpp b/engines/watchmaker/init/nl_parse.cpp
index b20a857d9fe..8fb8126851a 100644
--- a/engines/watchmaker/init/nl_parse.cpp
+++ b/engines/watchmaker/init/nl_parse.cpp
@@ -19,8 +19,6 @@
  *
  */
 
-#define FORBIDDEN_SYMBOL_EXCEPTION_vsprintf
-
 #include "watchmaker/init/nl_parse.h"
 #include "common/stream.h"
 #include "common/textconsole.h"
@@ -39,7 +37,7 @@ int ParseError(const char *ln, ...) {
 		ErrorFunc();
 
 	va_start(ap, ln);
-	vsprintf(err, ln, ap);
+	vsnprintf(err, J_MAXSTRLEN, ln, ap);
 	va_end(ap);
 	warning("%s", err);
 	return 0;
diff --git a/engines/watchmaker/t2d/t2d.cpp b/engines/watchmaker/t2d/t2d.cpp
index f0325d565b8..292016b9991 100644
--- a/engines/watchmaker/t2d/t2d.cpp
+++ b/engines/watchmaker/t2d/t2d.cpp
@@ -2891,7 +2891,7 @@ void doT2DMouse(WGame &game) {
 							for (i = 0; i < T2D_OPTIONS_MAX_SAVES; i++) {
 								int afret;
 
-								sprintf(Name, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), i + 1);
+								snprintf(Name, MAX_PATH, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), i + 1);
 
 								t3dForceNOFastFile(1);
 								afret = t3dAccessFile(Name);
@@ -2909,12 +2909,12 @@ void doT2DMouse(WGame &game) {
 						{
 							TimeDate sysTime;
 							g_system->getTimeAndDate(sysTime);
-							sprintf(Text, "%02d:%02d.%02d %02d/%02d/%02d", sysTime.tm_hour, sysTime.tm_min,
+							snprintf(Text, 1000, "%02d:%02d.%02d %02d/%02d/%02d", sysTime.tm_hour, sysTime.tm_min,
 									sysTime.tm_sec, sysTime.tm_mday, sysTime.tm_mon, sysTime.tm_year);
 						}
 						if (DataSave(Text, (uint8) optionsSlot)) {
-							sprintf(Text, "%stemp.tmp", game.workDirs._gameDir.c_str());
-							sprintf(Name, "%sWmSav%02d.tga", game.workDirs._savesDir.c_str(), optionsSlot);
+							snprintf(Text, 1000, "%stemp.tmp", game.workDirs._gameDir.c_str());
+							snprintf(Name, MAX_PATH, "%sWmSav%02d.tga", game.workDirs._savesDir.c_str(), optionsSlot);
 							CopyFile(Text, Name, FALSE);
 						} else {
 							DebugLogFile("DataSave(slot %d) Failed. Quitting ...", optionsSlot);
@@ -2928,7 +2928,7 @@ void doT2DMouse(WGame &game) {
 					case T2D_BT_OPTIONS_LOAD:
 						bShowOnlyLoadWindow = 0;
 						i = Saves[optionsCurPos + optionsWhat].NFile;
-						sprintf(Name, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), i);
+						snprintf(Name, MAX_PATH, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), i);
 						if (!DataLoad(game, "", (uint8) i)) {
 							DebugLogFile("DataLoad(slot %d) Failed. Quitting ...", i);
 							CloseSys(game);
@@ -4412,14 +4412,14 @@ void doT2D(WGame &game) {
 			w->text[T2D_TEXT_PDA_MAIN_TIME].font = FontKind::PDA;
 			w->text[T2D_TEXT_PDA_MAIN_TIME].color = GREEN_FONT;
 			if (t3dCurTime >= 1300) {
-				sprintf(w->text[T2D_TEXT_PDA_MAIN_TIME].text, "%04d", t3dCurTime - 1200);
+				snprintf(w->text[T2D_TEXT_PDA_MAIN_TIME].text, T2D_MAX_TEXTS_IN_WIN, "%04d", t3dCurTime - 1200);
 				w->text[T2D_TEXT_PDA_MAIN_TIME].text[5] = 0;
 				w->text[T2D_TEXT_PDA_MAIN_TIME].text[4] = w->text[T2D_TEXT_PDA_MAIN_TIME].text[3];
 				w->text[T2D_TEXT_PDA_MAIN_TIME].text[3] = w->text[T2D_TEXT_PDA_MAIN_TIME].text[2];
 				w->text[T2D_TEXT_PDA_MAIN_TIME].text[2] = ':';
 				strcat(w->text[T2D_TEXT_PDA_MAIN_TIME].text, " PM");
 			} else {
-				sprintf(w->text[T2D_TEXT_PDA_MAIN_TIME].text, "%04d", t3dCurTime);
+				snprintf(w->text[T2D_TEXT_PDA_MAIN_TIME].text, T2D_MAX_TEXTS_IN_WIN, "%04d", t3dCurTime);
 				w->text[T2D_TEXT_PDA_MAIN_TIME].text[5] = 0;
 				w->text[T2D_TEXT_PDA_MAIN_TIME].text[4] = w->text[T2D_TEXT_PDA_MAIN_TIME].text[3];
 				w->text[T2D_TEXT_PDA_MAIN_TIME].text[3] = w->text[T2D_TEXT_PDA_MAIN_TIME].text[2];
@@ -5456,8 +5456,8 @@ void CaricaSaves(WGame &game) {
 	t3dForceNOFastFile(1);
 
 	for (i = 0; i < T2D_OPTIONS_MAX_SAVES; i++) {
-		sprintf(DataFile, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), i + 1);
-		sprintf(GfxFile,  "%sWmSav%02d.tga", game.workDirs._savesDir.c_str(), i + 1);
+		snprintf(DataFile, MAX_PATH, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), i + 1);
+		snprintf(GfxFile,  MAX_PATH, "%sWmSav%02d.tga", game.workDirs._savesDir.c_str(), i + 1);
 
 //		se non facessi cosi' la funzione t3dOpenFile() non trovando il file sparerebbe mille warning
 		if (!t3dAccessFile(DataFile)) continue;
@@ -5542,8 +5542,8 @@ void RefreshSaveImg(WGame &game, int Pos, uint8 Type) {
 
 		if (Pos >= NSaves) break;
 
-		sprintf(DataFileName, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), Saves[Pos].NFile);
-		sprintf(GfxFileName,  "%sWmSav%02d.tga", game.workDirs._savesDir.c_str(), Saves[Pos].NFile);
+		snprintf(DataFileName, MAX_PATH, "%sWm%02d.sav", game.workDirs._savesDir.c_str(), Saves[Pos].NFile);
+		snprintf(GfxFileName,  MAX_PATH, "%sWmSav%02d.tga", game.workDirs._savesDir.c_str(), Saves[Pos].NFile);
 
 		t3dForceNOFastFile(1);
 		if (!t3dAccessFile(DataFileName)) {
@@ -5563,7 +5563,7 @@ void RefreshSaveImg(WGame &game, int Pos, uint8 Type) {
 		w->bm[T2D_BM_OPTIONS_SAVE_START + i].tnum &= ~T2D_BM_OFF;
 
 		//Aggiorna la descrizione
-		sprintf(w->text[T2D_TEXT_OPTIONS_SAVE_START + i].text, "%02d:%02d %02d/%02d/%04d", Saves[Pos].Hour, Saves[Pos].Min, Saves[Pos].Day, Saves[Pos].Month, Saves[Pos].Year);
+		snprintf(w->text[T2D_TEXT_OPTIONS_SAVE_START + i].text, T2D_MAX_TEXTS_IN_WIN, "%02d:%02d %02d/%02d/%04d", Saves[Pos].Hour, Saves[Pos].Min, Saves[Pos].Day, Saves[Pos].Month, Saves[Pos].Year);
 		w->bm[T2D_BM_OPTIONS_TEXT_SAVE_START + i].tnum &= ~T2D_BM_OFF;
 		strcpy(optionsSaves[i], DataFileName);
 




More information about the Scummvm-git-logs mailing list