|
@@ -35,7 +35,7 @@ namespace LOTRO_DAT {
|
|
|
MakeSubDirectories();
|
|
|
} catch (std::exception &e) {
|
|
|
LOG(ERROR) << "Caught " << e.what() << " exception.";
|
|
|
- LOG(DEBUG) << "Unable to initialize directory at offset " << offset << ". Initializing it as empty directory...";
|
|
|
+ LOG(WARNING) << "Unable to initialize directory at offset " << offset << ". Initializing it as empty directory...";
|
|
|
|
|
|
subdirs_.clear();
|
|
|
subfiles_.clear();
|
|
@@ -47,7 +47,7 @@ namespace LOTRO_DAT {
|
|
|
MakeSubFiles();
|
|
|
} catch (std::exception &e) {
|
|
|
LOG(ERROR) << "Caught " << e.what() << " exception.";
|
|
|
- LOG(DEBUG) << "Unable to initialize directory at offset " << offset << ". Initializing it as empty directory...";
|
|
|
+ LOG(WARNING) << "Unable to initialize directory at offset " << offset << ". Initializing it as empty directory...";
|
|
|
|
|
|
subdirs_.clear();
|
|
|
subfiles_.clear();
|
|
@@ -59,7 +59,7 @@ namespace LOTRO_DAT {
|
|
|
BinaryData data(1024);
|
|
|
dat_->ReadData(data, 63 * 8, offset_);
|
|
|
if (data.ToNumber<4>(0) != 0 || data.ToNumber<4>(4) != 0) {
|
|
|
- LOG(ERROR) << "first 8 bytes are not equal to 0 at offset " << offset_;
|
|
|
+ LOG(DEBUG) << "first 8 bytes are not equal to 0 at offset " << offset_;
|
|
|
std::string err =
|
|
|
std::string("Bad SubDirectory::MakeSubDirectories - first 8 bytes are not equal to 0 at offset ")
|
|
|
+ std::to_string(offset_);
|
|
@@ -72,7 +72,10 @@ namespace LOTRO_DAT {
|
|
|
|
|
|
try {
|
|
|
SubDirectory *subdir = new SubDirectory(data.ToNumber<4>(i + 4), dat_);
|
|
|
- subdirs_.push_back(subdir);
|
|
|
+ if (subdir->subfiles_.empty() && subdir->subdirs_.empty())
|
|
|
+ LOG(WARNING) << "Cannot initialize sub-subdirectory. Dictionary offset = " << offset_ + i << ";";
|
|
|
+ else
|
|
|
+ subdirs_.push_back(subdir);
|
|
|
} catch (std::exception &e) {
|
|
|
LOG(ERROR) << "Caught " << e.what() << " exception.";
|
|
|
LOG(DEBUG) << "Making SubDirectory at offset " << data.ToNumber<4>(i + 4) << " failed, continuing";
|
|
@@ -91,8 +94,8 @@ namespace LOTRO_DAT {
|
|
|
|
|
|
BinaryData mfile_id(20);
|
|
|
dat_->ReadData(mfile_id, 20, data.ToNumber<4>(i + 12) + 8);
|
|
|
- if (!mfile_id.CheckCompression() && data.ToNumber<4>(i + 8) != mfile_id.ToNumber<4>(0)) {
|
|
|
- LOG(DEBUG) << "File id in file doesn't match to file_id in dictionary";
|
|
|
+ if (mfile_id.Empty() || (!mfile_id.CheckCompression() && data.ToNumber<4>(i + 8) != mfile_id.ToNumber<4>(0))) {
|
|
|
+ LOG(DEBUG) << "File id in file doesn't match to file_id in dictionary (offset = " << data.ToNumber<4>(i + 12) << ")";
|
|
|
continue;
|
|
|
}
|
|
|
|