aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/DataStores
diff options
context:
space:
mode:
authorSpp <none@none>2010-12-06 02:07:53 +0100
committerSpp <none@none>2010-12-06 02:07:53 +0100
commit408fce1de69249b82cc042cb31f3fd16983c7e81 (patch)
treef4b99f386821e70f155d9aa61b70cfb1f2d3d825 /src/server/shared/DataStores
parente226c4ac344d06c7abbd6f04725ced2b33606349 (diff)
Core: Some optimizations
- Declare some functions const - Fix some mem leak - Fix some resource leak - Remove unused variables and functions - Remove duplicate functions - Reduce the scope of some variables - Remove unused file --HG-- branch : trunk
Diffstat (limited to 'src/server/shared/DataStores')
-rwxr-xr-xsrc/server/shared/DataStores/DBCFileLoader.cpp38
-rwxr-xr-xsrc/server/shared/DataStores/DBCFileLoader.h2
2 files changed, 31 insertions, 9 deletions
diff --git a/src/server/shared/DataStores/DBCFileLoader.cpp b/src/server/shared/DataStores/DBCFileLoader.cpp
index 906cb95cb65..e087d5cb980 100755
--- a/src/server/shared/DataStores/DBCFileLoader.cpp
+++ b/src/server/shared/DataStores/DBCFileLoader.cpp
@@ -41,31 +41,50 @@ bool DBCFileLoader::Load(const char *filename, const char *fmt)
if (!f)
return false;
- if (fread(&header,4,1,f)!=1) // Number of records
+ if (fread(&header,4,1,f) != 1) // Number of records
+ {
+ fclose(f);
return false;
+ }
+
EndianConvert(header);
- if (header!=0x43424457)
- return false; //'WDBC'
+ if (header != 0x43424457) //'WDBC'
+ {
+ fclose(f);
+ return false;
+ }
- if (fread(&recordCount,4,1,f)!=1) // Number of records
+ if (fread(&recordCount,4,1,f) != 1) // Number of records
+ {
+ fclose(f);
return false;
+ }
EndianConvert(recordCount);
- if (fread(&fieldCount,4,1,f)!=1) // Number of fields
+ if (fread(&fieldCount,4,1,f) != 1) // Number of fields
+ {
+ fclose(f);
return false;
+ }
EndianConvert(fieldCount);
- if (fread(&recordSize,4,1,f)!=1) // Size of a record
+ if (fread(&recordSize,4,1,f) != 1) // Size of a record
+ {
+ fclose(f);
return false;
+ }
EndianConvert(recordSize);
- if (fread(&stringSize,4,1,f)!=1) // String size
+ if (fread(&stringSize,4,1,f) != 1) // String size
+ {
+ fclose(f);
return false;
+ }
EndianConvert(stringSize);
@@ -83,8 +102,11 @@ bool DBCFileLoader::Load(const char *filename, const char *fmt)
data = new unsigned char[recordSize*recordCount+stringSize];
stringTable = data + recordSize*recordCount;
- if (fread(data,recordSize*recordCount+stringSize,1,f)!=1)
+ if (fread(data,recordSize*recordCount+stringSize,1,f) != 1)
+ {
+ fclose(f);
return false;
+ }
fclose(f);
diff --git a/src/server/shared/DataStores/DBCFileLoader.h b/src/server/shared/DataStores/DBCFileLoader.h
index 8dc06ac96ae..6675458215b 100755
--- a/src/server/shared/DataStores/DBCFileLoader.h
+++ b/src/server/shared/DataStores/DBCFileLoader.h
@@ -93,7 +93,7 @@ class DBCFileLoader
uint32 GetRowSize() const { return recordSize; }
uint32 GetCols() const { return fieldCount; }
uint32 GetOffset(size_t id) const { return (fieldsOffset != NULL && id < fieldCount) ? fieldsOffset[id] : 0; }
- bool IsLoaded() { return data != NULL; }
+ bool IsLoaded() const { return data != NULL; }
char* AutoProduceData(const char* fmt, uint32& count, char**& indexTable, uint32 sqlRecordCount, uint32 sqlHighestIndex, char *& sqlDataTable);
char* AutoProduceStrings(const char* fmt, char* dataTable);
static uint32 GetFormatRecordSize(const char * format, int32 * index_pos = NULL);