Mask the name index instead

The maximum number of import libraries (32) is already asserted
This commit is contained in:
x1nixmzeng 2016-01-09 02:43:29 +00:00
parent 7e4fdf7669
commit 06f259c87d
3 changed files with 3 additions and 4 deletions

View File

@ -264,8 +264,7 @@ bool XexModule::Load(const std::string& name, const std::string& path,
for (uint32_t i = 0; i < library_count; i++) {
auto library =
reinterpret_cast<xex2_import_library*>(libraries_ptr + library_offset);
SetupLibraryImports(string_table[library->name_index % library_count],
library);
SetupLibraryImports(string_table[library->name_index & 0xFF], library);
library_offset += library->size;
}

View File

@ -479,7 +479,7 @@ void UserModule::Dump() {
for (uint32_t l = 0; l < library_count; l++) {
auto library = reinterpret_cast<const xex2_import_library*>(
libraries + library_offset);
auto name = string_table[library->name_index % library_count];
auto name = string_table[library->name_index & 0xFF];
sb.AppendFormat(" %s - %d imports\n", name,
(uint16_t)library->count);

View File

@ -286,7 +286,7 @@ int xe_xex2_read_header(const uint8_t* addr, const size_t length,
library->min_version.value = src_library->version_min.value;
std::strncpy(library->name,
string_table[src_library->name_index % count],
string_table[src_library->name_index & 0xFF],
xe::countof(library->name));
library->record_count = src_library->count;