From c8ab4004ad986583bcd22b53e8bc55bf5d8d9c42 Mon Sep 17 00:00:00 2001 From: Michael Stefaniuc Date: Tue, 8 Mar 2016 11:44:26 +0100 Subject: [PATCH] dbghelp: Use CONTAINING_RECORD instead of reimplementing it. Signed-off-by: Michael Stefaniuc Signed-off-by: Alexandre Julliard --- dlls/dbghelp/dbghelp_private.h | 3 --- dlls/dbghelp/elf_module.c | 2 +- dlls/dbghelp/macho_module.c | 2 +- dlls/dbghelp/msc.c | 10 +++++----- dlls/dbghelp/pe_module.c | 2 +- dlls/dbghelp/symbol.c | 8 ++++---- dlls/dbghelp/type.c | 2 +- 7 files changed, 13 insertions(+), 16 deletions(-) diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h index 98bd363f361..53d1377afda 100644 --- a/dlls/dbghelp/dbghelp_private.h +++ b/dlls/dbghelp/dbghelp_private.h @@ -112,9 +112,6 @@ void hash_table_iter_init(const struct hash_table* ht, struct hash_table_iter* hti, const char* name) DECLSPEC_HIDDEN; void* hash_table_iter_up(struct hash_table_iter* hti) DECLSPEC_HIDDEN; -#define GET_ENTRY(__i, __t, __f) \ - ((__t*)((char*)(__i) - FIELD_OFFSET(__t,__f))) - extern unsigned dbghelp_options DECLSPEC_HIDDEN; /* some more Wine extensions */ diff --git a/dlls/dbghelp/elf_module.c b/dlls/dbghelp/elf_module.c index b176143492a..6428955941c 100644 --- a/dlls/dbghelp/elf_module.c +++ b/dlls/dbghelp/elf_module.c @@ -659,7 +659,7 @@ static void elf_finish_stabs_info(struct module* module, const struct hash_table hash_table_iter_init(&module->ht_symbols, &hti, NULL); while ((ptr = hash_table_iter_up(&hti))) { - sym = GET_ENTRY(ptr, struct symt_ht, hash_elt); + sym = CONTAINING_RECORD(ptr, struct symt_ht, hash_elt); switch (sym->symt.tag) { case SymTagFunction: diff --git a/dlls/dbghelp/macho_module.c b/dlls/dbghelp/macho_module.c index 1f5d4461c06..01fa300eff7 100644 --- a/dlls/dbghelp/macho_module.c +++ b/dlls/dbghelp/macho_module.c @@ -920,7 +920,7 @@ static void macho_finish_stabs(struct module* module, struct hash_table* ht_symt hash_table_iter_init(&module->ht_symbols, &hti_modules, ste->ht_elt.name); while ((ptr = hash_table_iter_up(&hti_modules))) { - sym = GET_ENTRY(ptr, struct symt_ht, hash_elt); + sym = CONTAINING_RECORD(ptr, struct symt_ht, hash_elt); if (strcmp(sym->hash_elt.name, ste->ht_elt.name)) continue; diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index 2c1f03b2347..f17d91eac52 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -1025,7 +1025,7 @@ static struct symt* codeview_add_type_struct(struct codeview_type_parse* ctp, hash_table_iter_init(&ctp->module->ht_types, &hti, name); while ((ptr = hash_table_iter_up(&hti))) { - type = GET_ENTRY(ptr, struct symt_ht, hash_elt); + type = CONTAINING_RECORD(ptr, struct symt_ht, hash_elt); if (type->symt.tag == SymTagUDT && type->hash_elt.name && !strcmp(type->hash_elt.name, name)) @@ -2982,9 +2982,9 @@ static BOOL pev_get_val(struct pevaluator* pev, const char* str, DWORD_PTR* val hash_table_iter_init(&pev->values, &hti, str); while ((ptr = hash_table_iter_up(&hti))) { - if (!strcmp(GET_ENTRY(ptr, struct zvalue, elt)->elt.name, str)) + if (!strcmp(CONTAINING_RECORD(ptr, struct zvalue, elt)->elt.name, str)) { - *val = GET_ENTRY(ptr, struct zvalue, elt)->value; + *val = CONTAINING_RECORD(ptr, struct zvalue, elt)->value; return TRUE; } } @@ -3037,9 +3037,9 @@ static BOOL pev_set_value(struct pevaluator* pev, const char* name, DWORD_PTR v hash_table_iter_init(&pev->values, &hti, name); while ((ptr = hash_table_iter_up(&hti))) { - if (!strcmp(GET_ENTRY(ptr, struct zvalue, elt)->elt.name, name)) + if (!strcmp(CONTAINING_RECORD(ptr, struct zvalue, elt)->elt.name, name)) { - GET_ENTRY(ptr, struct zvalue, elt)->value = val; + CONTAINING_RECORD(ptr, struct zvalue, elt)->value = val; break; } } diff --git a/dlls/dbghelp/pe_module.c b/dlls/dbghelp/pe_module.c index b52d47e281c..e7255f89ba5 100644 --- a/dlls/dbghelp/pe_module.c +++ b/dlls/dbghelp/pe_module.c @@ -369,7 +369,7 @@ static BOOL pe_locate_with_coff_symbol_table(struct module* module) hash_table_iter_init(&module->ht_symbols, &hti, name); while ((ptr = hash_table_iter_up(&hti))) { - sym = GET_ENTRY(ptr, struct symt_data, hash_elt); + sym = CONTAINING_RECORD(ptr, struct symt_data, hash_elt); if (sym->symt.tag == SymTagData && (sym->kind == DataIsGlobal || sym->kind == DataIsFileStatic) && sym->u.var.kind == loc_absolute && diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c index 7569a5837db..efcf7b6688e 100644 --- a/dlls/dbghelp/symbol.c +++ b/dlls/dbghelp/symbol.c @@ -422,7 +422,7 @@ struct symt_block* symt_close_func_block(struct module* module, if (pc) block->size = func->address + pc - block->address; return (block->container->tag == SymTagBlock) ? - GET_ENTRY(block->container, struct symt_block, symt) : NULL; + CONTAINING_RECORD(block->container, struct symt_block, symt) : NULL; } struct symt_hierarchy_point* symt_add_function_point(struct module* module, @@ -741,7 +741,7 @@ static BOOL symt_enum_module(struct module_pair* pair, const WCHAR* match, hash_table_iter_init(&pair->effective->ht_symbols, &hti, NULL); while ((ptr = hash_table_iter_up(&hti))) { - sym = GET_ENTRY(ptr, struct symt_ht, hash_elt); + sym = CONTAINING_RECORD(ptr, struct symt_ht, hash_elt); nameW = symt_get_nameW(&sym->symt); ret = SymMatchStringW(nameW, match, FALSE); HeapFree(GetProcessHeap(), 0, nameW); @@ -1329,7 +1329,7 @@ static BOOL find_name(struct process* pcs, struct module* module, const char* na hash_table_iter_init(&pair.effective->ht_symbols, &hti, name); while ((ptr = hash_table_iter_up(&hti))) { - sym = GET_ENTRY(ptr, struct symt_ht, hash_elt); + sym = CONTAINING_RECORD(ptr, struct symt_ht, hash_elt); if (!strcmp(sym->hash_elt.name, name)) { @@ -2148,7 +2148,7 @@ BOOL WINAPI SymEnumLines(HANDLE hProcess, ULONG64 base, PCSTR compiland, { unsigned int i; - sym = GET_ENTRY(ptr, struct symt_ht, hash_elt); + sym = CONTAINING_RECORD(ptr, struct symt_ht, hash_elt); if (sym->symt.tag != SymTagFunction) continue; sci.FileName[0] = '\0'; diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c index c0ffaa03b74..6ccbc9a5544 100644 --- a/dlls/dbghelp/type.c +++ b/dlls/dbghelp/type.c @@ -170,7 +170,7 @@ static struct symt* symt_find_type_by_name(const struct module* module, hash_table_iter_init(&module->ht_types, &hti, typename); while ((ptr = hash_table_iter_up(&hti))) { - type = GET_ENTRY(ptr, struct symt_ht, hash_elt); + type = CONTAINING_RECORD(ptr, struct symt_ht, hash_elt); if ((sym_tag == SymTagNull || type->symt.tag == sym_tag) && type->hash_elt.name && !strcmp(type->hash_elt.name, typename)) -- 2.11.4.GIT