|
From: <bul...@us...> - 2013-06-21 20:28:15
|
Revision: 22817
http://sourceforge.net/p/bzflag/code/22817
Author: bullet_catcher
Date: 2013-06-21 20:28:12 +0000 (Fri, 21 Jun 2013)
Log Message:
-----------
Store the map MD5 hash in a std::string instead of a fixed-size buffer.
Modified Paths:
--------------
trunk/bzflag/src/bzfs/RecordReplay.cxx
trunk/bzflag/src/bzfs/bzfs.cxx
trunk/bzflag/src/bzfs/bzfs.h
Modified: trunk/bzflag/src/bzfs/RecordReplay.cxx
===================================================================
--- trunk/bzflag/src/bzfs/RecordReplay.cxx 2013-06-21 20:24:03 UTC (rev 22816)
+++ trunk/bzflag/src/bzfs/RecordReplay.cxx 2013-06-21 20:28:12 UTC (rev 22817)
@@ -2042,7 +2042,7 @@
strncpy(hdr.motto, motto, sizeof(hdr.motto));
strncpy(hdr.ServerVersion, getServerVersion(), sizeof(hdr.ServerVersion));
strncpy(hdr.appVersion, getAppVersion(), sizeof(hdr.appVersion));
- strncpy(hdr.realHash, hexDigest, sizeof(hdr.realHash));
+ strncpy(hdr.realHash, hexDigest.c_str(), sizeof(hdr.realHash));
packFlagTypes(flagsBuf, &hdr.flagsSize);
hdr.flags = flagsBuf;
@@ -2323,9 +2323,8 @@
MD5 md5;
md5.update((unsigned char *)worldDatabase, worldDatabaseSize);
md5.finalize();
- std::string hash = md5.hexdigest();
- hexDigest[0] = h->realHash[0];
- strncpy(hexDigest + 1, hash.c_str(), sizeof(hexDigest) - 1);
+ hexDigest = h->realHash[0];
+ hexDigest += md5.hexdigest();
delete[] oldWorld;
return true; // the world was replaced
Modified: trunk/bzflag/src/bzfs/bzfs.cxx
===================================================================
--- trunk/bzflag/src/bzfs/bzfs.cxx 2013-06-21 20:24:03 UTC (rev 22816)
+++ trunk/bzflag/src/bzfs/bzfs.cxx 2013-06-21 20:28:12 UTC (rev 22817)
@@ -121,7 +121,7 @@
static float maxWorldHeight = 0.0f;
static bool disableHeightChecks = false;
-char hexDigest[50];
+std::string hexDigest;
TimeKeeper gameStartTime;
TimeKeeper countdownPauseStart = TimeKeeper::getNullTime();
@@ -1111,16 +1111,11 @@
MD5 md5;
md5.update((unsigned char *)worldDatabase, worldDatabaseSize);
md5.finalize();
- if (clOptions->worldFile == "") {
- strcpy(hexDigest, "t");
- } else {
- strcpy(hexDigest, "p");
- }
- std::string digest = md5.hexdigest();
- strcat(hexDigest, digest.c_str());
+ hexDigest = (clOptions->worldFile == "") ? 't' : 'p';
+ hexDigest += md5.hexdigest();
TimeKeeper endTime = TimeKeeper::getCurrent();
logDebugMessage(3,"MD5 generation: %.3f seconds\n", endTime - startTime);
- logDebugMessage(3,"MD5 = %s\n", digest.c_str());
+ logDebugMessage(3,"MD5 = %s\n", hexDigest.c_str()+1);
// water levels probably require flags on buildings
const float waterLevel = world->getWaterLevel();
@@ -4273,7 +4268,7 @@
clOptions->cacheURL.size() + 1);
directMessage(t, MsgCacheURL, (char*)obuf-(char*)obufStart, obufStart);
}
- obuf = nboPackString(obufStart, hexDigest, strlen(hexDigest)+1);
+ obuf = nboPackString(obufStart, hexDigest.c_str(), hexDigest.size() + 1);
directMessage(t, MsgWantWHash, (char*)obuf-(char*)obufStart, obufStart);
break;
}
Modified: trunk/bzflag/src/bzfs/bzfs.h
===================================================================
--- trunk/bzflag/src/bzfs/bzfs.h 2013-06-21 20:24:03 UTC (rev 22816)
+++ trunk/bzflag/src/bzfs/bzfs.h 2013-06-21 20:28:12 UTC (rev 22817)
@@ -145,7 +145,7 @@
extern int countdownDelay;
extern TimeKeeper countdownPauseStart;
extern int countdownResumeDelay;
-extern char hexDigest[50];
+extern std::string hexDigest;
extern WorldInfo *world;
extern char *worldDatabase;
extern uint32_t worldDatabaseSize;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|