- changing the max filecount lower to avoid stack overflow due to array taking > 1MB

This commit is contained in:
Mark Vejvoda 2010-08-26 20:28:26 +00:00
parent 169234b80f
commit 1058065ce7
4 changed files with 15 additions and 8 deletions

View File

@ -22,6 +22,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "g3d_viewer", "g3d_viewer.vc
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "glest_configurator", "glest_configurator.vcproj", "{FE5C7C7C-F109-44F5-8329-19A4E24F162D}"
ProjectSection(ProjectDependencies) = postProject
{8DAA0C24-95CD-4F66-B4C5-19ABDD771746} = {8DAA0C24-95CD-4F66-B4C5-19ABDD771746}
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libstreflop", "libstreflop.vcproj", "{CDF4DDB9-945E-4D0D-9F0E-2BBEB5D22141}"
EndProject

View File

@ -593,16 +593,20 @@ bool NetworkMessageSynchNetworkGameData::receive(Socket* socket) {
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] packetLoopCount = %d\n",__FILE__,__FUNCTION__,__LINE__,packetLoopCount);
for(int iPacketLoop = 0; iPacketLoop < packetLoopCount; ++iPacketLoop) {
for(int iPacketLoop = 0; result == true && iPacketLoop < packetLoopCount; ++iPacketLoop) {
int packetIndex = iPacketLoop * NetworkMessageSynchNetworkGameData::maxFileCRCPacketCount;
int maxFileCountPerPacket = maxFileCRCPacketCount;
int packetFileCount = min(maxFileCountPerPacket,data.header.techCRCFileCount - packetIndex);
int packetDetail1DataSize = (DetailSize1 * packetFileCount);
int packetDetail2DataSize = (DetailSize2 * packetFileCount);
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] iPacketLoop = %d, packetIndex = %d, maxFileCountPerPacket = %d, packetFileCount = %d, packetDetail1DataSize = %d, packetDetail2DataSize = %d\n",__FILE__,__FUNCTION__,__LINE__,iPacketLoop,packetIndex,maxFileCountPerPacket,packetFileCount,packetDetail1DataSize,packetDetail2DataSize);
for(int peekAttempt = 1; peekAttempt < 5000; peekAttempt++) {
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] peekAttempt = %d\n",__FILE__,__FUNCTION__,__LINE__,peekAttempt);
if (NetworkMessage::peek(socket, &data.detail.techCRCFileList[packetIndex], (DetailSize1 * packetFileCount)) == true) {
if (NetworkMessage::peek(socket, &data.detail.techCRCFileList[packetIndex], packetDetail1DataSize) == true) {
break;
}
else {
@ -610,7 +614,7 @@ bool NetworkMessageSynchNetworkGameData::receive(Socket* socket) {
}
}
result = NetworkMessage::receive(socket, &data.detail.techCRCFileList[packetIndex], (DetailSize1 * packetFileCount));
result = NetworkMessage::receive(socket, &data.detail.techCRCFileList[packetIndex], packetDetail1DataSize);
if(result == true) {
for(int i = 0; i < data.header.techCRCFileCount; ++i) {
data.detail.techCRCFileList[i].nullTerminate();
@ -619,7 +623,7 @@ bool NetworkMessageSynchNetworkGameData::receive(Socket* socket) {
for(int peekAttempt = 1; peekAttempt < 5000; peekAttempt++) {
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s Line: %d] peekAttempt = %d\n",__FILE__,__FUNCTION__,__LINE__,peekAttempt);
if (NetworkMessage::peek(socket, &data.detail.techCRCFileCRCList[packetIndex], (DetailSize2 * packetFileCount)) == true) {
if (NetworkMessage::peek(socket, &data.detail.techCRCFileCRCList[packetIndex], packetDetail2DataSize) == true) {
break;
}
else {
@ -627,7 +631,7 @@ bool NetworkMessageSynchNetworkGameData::receive(Socket* socket) {
}
}
result = NetworkMessage::receive(socket, &data.detail.techCRCFileCRCList[packetIndex], (DetailSize2 * packetFileCount));
result = NetworkMessage::receive(socket, &data.detail.techCRCFileCRCList[packetIndex], packetDetail2DataSize);
}
}
}

View File

@ -345,7 +345,7 @@ class NetworkMessageSynchNetworkGameData: public NetworkMessage{
private:
static const int maxStringSize= 255;
static const int maxFileCRCCount= 2500;
static const int maxFileCRCCount= 1500;
static const int maxFileCRCPacketCount= 100;
private:
@ -417,7 +417,7 @@ class NetworkMessageSynchNetworkGameDataStatus: public NetworkMessage{
private:
static const int maxStringSize= 255;
static const int maxFileCRCCount= 2500;
static const int maxFileCRCCount= 1500;
static const int maxFileCRCPacketCount= 100;
private: