dear all:
I pretent to compile a version of mangos for my client 3.3.5(13930)version. while using the ad.exe to exact the dbc/maps i encounter a lot of problem. first is the fatal error:Invalid component.wow-zhCN.txt file format , I slove it by using mpqeditor to modify the component.wow-zhcn.txt to component.wow-zhCN.txt ,but while exacting maps it told me that the Invalid map.dbc file format.
I check the source code of ad.exe. i foud the problem
if(header[0]!='W' || header[1]!='D' || header[2]!='B' || header[3]!='C')
return false;
then i check the dbc file exact from trinitycore, the first four characters is truly WDBC,but my dbc file is ? character.
i know my the mpq patch-zhCN-3.MPQ is strange it has only 32k byte. did the ad.exe will exact the map.dbc from this file(this file has no DBC file exist inside)?
and when i trace the source, i was confused at some place.
in mpq_libmpq.cpp
MPQFile::MPQFile(const char* filename):
eof(false),
buffer(0),
pointer(0),
size(0)
{
for(ArchiveSet::iterator i=gOpenArchives.begin(); i!=gOpenArchives.end();++i)
{
mpq_archive &mpq_a = (*i)->mpq_a;
mpq_hash hash = (*i)->GetHashEntry(filename);
uint32 blockindex = hash.blockindex;
if (blockindex == 0xFFFFFFFF)
continue; //file not found
uint32 fileno = blockindex;
//int fileno = libmpq_file_number(&mpq_a, filename);
//if(fileno == LIBMPQ_EFILE_NOT_FOUND)
// continue;
// Found!
size = libmpq_file_info(&mpq_a, LIBMPQ_FILE_UNCOMPRESSED_SIZE, fileno);
// HACK: in patch.mpq some files don't want to open and give 1 for filesize
if (size<=1) {
eof = true;
buffer = 0;
return;
}
buffer = new char;
//libmpq_file_getdata
libmpq_file_getdata(&mpq_a, hash, fileno, (unsigned char*)buffer);
return;
}
eof = true;
buffer = 0;
}
the buffer in the line31 seems not free very well(it was newed many times) was i right?
in the realse mode it works but in the debug mode, it told me that the heap was not release.
can anyone help me on this? thank you very much.