Remove unnecessarily stored data
This commit is contained in:
@@ -264,7 +264,7 @@ static HiResult moduler_apply_module_patch(VectorSymbol *psymbols,
|
||||
return HI_OK;
|
||||
}
|
||||
|
||||
PatchData moduler_create_patch(ModuleData *module) {
|
||||
static PatchData moduler_create_patch(ModuleData *module) {
|
||||
|
||||
time_t now = time(NULL);
|
||||
struct tm *t = localtime(&now);
|
||||
@@ -281,7 +281,7 @@ PatchData moduler_create_patch(ModuleData *module) {
|
||||
|
||||
char filename[512];
|
||||
size_t written =
|
||||
hi_str_concat_buf(sizeof(filename), filename, module->name, file_append);
|
||||
string_concat_buf(sizeof(filename), filename, module->name, file_append);
|
||||
|
||||
if (written == 0) {
|
||||
log_error("Failed to concat %s and %s\n", module->name, ".patch");
|
||||
@@ -294,14 +294,13 @@ PatchData moduler_create_patch(ModuleData *module) {
|
||||
return data;
|
||||
}
|
||||
|
||||
HiResult moduler_reload(VectorModuleData *modules, ModuleData *module,
|
||||
VectorMemoryMap *memmaps) {
|
||||
HiResult moduler_reload(VectorModuleData *modules, ModuleData *module) {
|
||||
|
||||
// Return OK because this isn't an error case. We just don't do it yet
|
||||
// because we only handle reloading a complete solib. Can't do that with
|
||||
// executables.
|
||||
if (hi_modinfo_has(module->info, HI_MODULE_STATE_EXEC)) {
|
||||
module->info = hi_modinfo_clear(module->info, HI_MODULE_STATE_DIRTY);
|
||||
if (modinfo_has(module->info, HI_MODULE_STATE_EXEC)) {
|
||||
module->info = modinfo_clear(module->info, HI_MODULE_STATE_DIRTY);
|
||||
return HI_OK;
|
||||
}
|
||||
|
||||
@@ -317,18 +316,19 @@ HiResult moduler_reload(VectorModuleData *modules, ModuleData *module,
|
||||
void *new_handle = dlopen(patch.filename, RTLD_LAZY);
|
||||
if (!new_handle) {
|
||||
log_error("Couldn't load: %s\n", dlerror());
|
||||
module->info = hi_modinfo_clear(module->info, HI_MODULE_STATE_DIRTY);
|
||||
module->info = modinfo_clear(module->info, HI_MODULE_STATE_DIRTY);
|
||||
return HI_FAIL;
|
||||
}
|
||||
patch.dlhandle = new_handle;
|
||||
|
||||
// refresh cache
|
||||
if (!HIOK(memmaps_from_process(memmaps))) {
|
||||
VectorMemoryMap memmaps;
|
||||
vector_init(&memmaps);
|
||||
if (!HIOK(memmaps_from_process(&memmaps))) {
|
||||
log_error("Failed to collect memory information for process\n");
|
||||
return HI_FAIL;
|
||||
}
|
||||
|
||||
patch.memreg = memmaps_find_by_name(patch.filename, memmaps);
|
||||
patch.memreg = memmaps_find_by_name(patch.filename, &memmaps);
|
||||
void *patch_base = (void *)patch.memreg.start;
|
||||
|
||||
VectorSymbol patch_symbols;
|
||||
@@ -344,11 +344,11 @@ HiResult moduler_reload(VectorModuleData *modules, ModuleData *module,
|
||||
for (size_t i = 0; i < vector_size(modules); ++i) {
|
||||
ModuleData mod = vector_at(modules, i);
|
||||
|
||||
if (!hi_modinfo_has(mod.info, HI_MODULE_STATE_PATCHABLE))
|
||||
if (!modinfo_has(mod.info, HI_MODULE_STATE_PATCHABLE))
|
||||
continue;
|
||||
|
||||
log_debug("Patching: %s\n", mod.name);
|
||||
MemorySpan module_memory = memmaps_find_by_name(mod.name, memmaps);
|
||||
MemorySpan module_memory = memmaps_find_by_name(mod.name, &memmaps);
|
||||
moduler_apply_module_patch(&patch_symbols, module_memory);
|
||||
|
||||
if (strncmp(mod.name, patch.filename, strlen(mod.name)) == 0) {
|
||||
@@ -383,7 +383,7 @@ HiResult moduler_reload(VectorModuleData *modules, ModuleData *module,
|
||||
symbol_term(&module_symbols);
|
||||
}
|
||||
|
||||
module->info = hi_modinfo_clear(module->info, HI_MODULE_STATE_DIRTY);
|
||||
module->info = modinfo_clear(module->info, HI_MODULE_STATE_DIRTY);
|
||||
}
|
||||
|
||||
free((char *)patch.filename);
|
||||
|
||||
Reference in New Issue
Block a user