From 26b5e033ffde3d161382fc9addbfa99738379641 Mon Sep 17 00:00:00 2001 From: maximius Date: Sat, 17 Oct 2009 15:35:07 -0700 Subject: *Massive cleanup (\n\n -> \n, *\n -> \n, cleanup for(...) to for (...), and some other cleanups by hand) *Fix a possible crash in Spell::DoAllEffectOnTarget --HG-- branch : trunk --- src/shared/Database/DBCFileLoader.cpp | 42 ----------------------------------- 1 file changed, 42 deletions(-) (limited to 'src/shared/Database/DBCFileLoader.cpp') diff --git a/src/shared/Database/DBCFileLoader.cpp b/src/shared/Database/DBCFileLoader.cpp index e7ebeedecfb..adf796fbce6 100644 --- a/src/shared/Database/DBCFileLoader.cpp +++ b/src/shared/Database/DBCFileLoader.cpp @@ -17,59 +17,42 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - #include #include #include - #include "DBCFileLoader.h" - DBCFileLoader::DBCFileLoader() { data = NULL; fieldsOffset = NULL; } - bool DBCFileLoader::Load(const char *filename, const char *fmt) { - uint32 header; if(data) { delete [] data; data=NULL; } - FILE * f=fopen(filename,"rb"); if(!f)return false; - if(fread(&header,4,1,f)!=1) // Number of records return false; - EndianConvert(header); if(header!=0x43424457) return false; //'WDBC' - if(fread(&recordCount,4,1,f)!=1) // Number of records return false; - EndianConvert(recordCount); - if(fread(&fieldCount,4,1,f)!=1) // Number of fields return false; - EndianConvert(fieldCount); - if(fread(&recordSize,4,1,f)!=1) // Size of a record return false; - EndianConvert(recordSize); - if(fread(&stringSize,4,1,f)!=1) // String size return false; - EndianConvert(stringSize); - fieldsOffset = new uint32[fieldCount]; fieldsOffset[0] = 0; for(uint32 i = 1; i < fieldCount; i++) @@ -80,17 +63,13 @@ bool DBCFileLoader::Load(const char *filename, const char *fmt) else // 4 byte fields (int32/float/strings) fieldsOffset[i] += 4; } - data = new unsigned char[recordSize*recordCount+stringSize]; stringTable = data + recordSize*recordCount; - if(fread(data,recordSize*recordCount+stringSize,1,f)!=1) return false; - fclose(f); return true; } - DBCFileLoader::~DBCFileLoader() { if(data) @@ -98,13 +77,11 @@ DBCFileLoader::~DBCFileLoader() if(fieldsOffset) delete [] fieldsOffset; } - DBCFileLoader::Record DBCFileLoader::getRecord(size_t id) { assert(data); return Record(*this, data + id*recordSize); } - uint32 DBCFileLoader::GetFormatRecordSize(const char * format,int32* index_pos) { uint32 recordsize = 0; @@ -130,13 +107,10 @@ uint32 DBCFileLoader::GetFormatRecordSize(const char * format,int32* index_pos) recordsize += 1; break; } - if(index_pos) *index_pos = i; - return recordsize; } - char* DBCFileLoader::AutoProduceData(const char* format, uint32& records, char**& indexTable, uint32 sqlRecordCount, uint32 sqlHighestIndex, char *& sqlDataTable) { /* @@ -146,18 +120,14 @@ char* DBCFileLoader::AutoProduceData(const char* format, uint32& records, char** float field1, int field2 }entry; - this func will generate entry[rows] data; */ - typedef char * ptr; if(strlen(format)!=fieldCount) return NULL; - //get struct size and index pos int32 i; uint32 recordsize=GetFormatRecordSize(format,&i); - if(i>=0) { uint32 maxi=0; @@ -167,11 +137,9 @@ char* DBCFileLoader::AutoProduceData(const char* format, uint32& records, char** uint32 ind=getRecord(y).getUInt (i); if(ind>maxi)maxi=ind; } - // If higher index avalible from sql - use it instead of dbcs if (sqlHighestIndex > maxi) maxi = sqlHighestIndex; - ++maxi; records=maxi; indexTable=new ptr[maxi]; @@ -182,11 +150,8 @@ char* DBCFileLoader::AutoProduceData(const char* format, uint32& records, char** records = recordCount + sqlRecordCount; indexTable = new ptr[recordCount+ sqlRecordCount]; } - char* dataTable= new char[(recordCount + sqlRecordCount)*recordsize]; - uint32 offset=0; - for(uint32 y =0;y=0) @@ -195,7 +160,6 @@ char* DBCFileLoader::AutoProduceData(const char* format, uint32& records, char** } else indexTable[y]=&dataTable[offset]; - for(uint32 x=0;x