diff --git a/src/Client/PseuWoW.cpp b/src/Client/PseuWoW.cpp index f2718df..8b018d4 100644 --- a/src/Client/PseuWoW.cpp +++ b/src/Client/PseuWoW.cpp @@ -117,6 +117,8 @@ bool PseuInstance::Init(void) _scp->SetPath(_scpdir); + CreateDir("cache"); + dbmgr.AddSearchPath("./cache"); dbmgr.AddSearchPath("./data/scp"); dbmgr.SetCompression(6); diff --git a/src/Client/SCPDatabase.cpp b/src/Client/SCPDatabase.cpp index e07e42c..c3fb255 100644 --- a/src/Client/SCPDatabase.cpp +++ b/src/Client/SCPDatabase.cpp @@ -626,7 +626,7 @@ uint32 SCPDatabaseMgr::SearchAndLoad(char *dbname, bool no_compiled) if(!goodfiles.size()) { - logerror("SCP: No files found that contain database [%u]", dbname); + logerror("SCP: No files found that contain database [%s]", dbname); return 0; } @@ -657,7 +657,12 @@ uint32 SCPDatabaseMgr::SearchAndLoad(char *dbname, bool no_compiled) char fn[100]; sprintf(fn,"./cache/%s.ccp",dbname); - Compact(dbname, fn, _compr); + if (!Compact(dbname, fn, _compr)) + { + logerror("Can't compact database %s, dropping it.", dbname); + DropDB(dbname); + return 0; + } logdetail("Database '%s' loaded from source and compacted with compression %u", dbname, _compr); diff --git a/src/shared/ZCompressor.cpp b/src/shared/ZCompressor.cpp index d7f17e1..93f39e5 100644 --- a/src/shared/ZCompressor.cpp +++ b/src/shared/ZCompressor.cpp @@ -16,14 +16,14 @@ void ZCompressor::_compress(void* dst, uint32 *dst_size, void* src, uint32 src_s { z_stream c_stream; - c_stream.zalloc = (alloc_func)0; - c_stream.zfree = (free_func)0; - c_stream.opaque = (voidpf)0; + c_stream.zalloc = (alloc_func)Z_NULL; + c_stream.zfree = (free_func)Z_NULL; + c_stream.opaque = (voidpf)Z_NULL; // default Z_BEST_SPEED (1) if (Z_OK != deflateInit(&c_stream, level)) { - //printf("ZLIB: Can't compress (zlib: deflateInit).\n"); + logerror("ZLIB: Can't compress (zlib: deflateInit).\n"); *dst_size = 0; return; } @@ -35,28 +35,28 @@ void ZCompressor::_compress(void* dst, uint32 *dst_size, void* src, uint32 src_s if (Z_OK != deflate(&c_stream, Z_NO_FLUSH)) { - //printf("ZLIB: Can't compress (zlib: deflate)\n"); + logerror("ZLIB: Can't compress (zlib: deflate)\n"); *dst_size = 0; return; } if (c_stream.avail_in != 0) { - //printf("Can't compress (zlib: deflate not greedy)\n"); + logerror("Can't compress (zlib: deflate not greedy)\n"); *dst_size = 0; return; } if (Z_STREAM_END != deflate(&c_stream, Z_FINISH)) { - //printf("Can't compress (zlib: deflate should report Z_STREAM_END)\n"); + logerror("Can't compress (zlib: deflate should report Z_STREAM_END)\n"); *dst_size = 0; return; } if (Z_OK != deflateEnd(&c_stream)) { - //printf("Can't compress (zlib: deflateEnd)\n"); + logerror("Can't compress (zlib: deflateEnd)\n"); *dst_size = 0; return; } @@ -73,7 +73,7 @@ void ZCompressor::Deflate(uint8 level) char *buf; buf=new char[size()+8]; - uint32 newsize,oldsize=size(); + uint32 newsize=size(),oldsize=size(); reserve(size()+8); _compress((void*)buf, &newsize, (void*)contents(),size(),level);