[PATCH] dbghelp: let SymGetTypeFromName fill more fields in SYMBOL_INFO
Eric Pouech
eric.pouech at gmail.com
Fri Aug 20 03:36:35 CDT 2021
---
dlls/dbghelp/type.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/dlls/dbghelp/type.c b/dlls/dbghelp/type.c
index 8e91eb3c554..1a7cef9b7c0 100644
--- a/dlls/dbghelp/type.c
+++ b/dlls/dbghelp/type.c
@@ -925,6 +925,8 @@ BOOL WINAPI SymGetTypeFromName(HANDLE hProcess, ULONG64 BaseOfDll,
{
struct module_pair pair;
struct symt* type;
+ const char* name;
+ DWORD64 size;
pair.pcs = process_find_by_handle(hProcess);
if (!pair.pcs) return FALSE;
@@ -932,7 +934,19 @@ BOOL WINAPI SymGetTypeFromName(HANDLE hProcess, ULONG64 BaseOfDll,
if (!module_get_debug(&pair)) return FALSE;
type = symt_find_type_by_name(pair.effective, SymTagNull, Name);
if (!type) return FALSE;
- Symbol->TypeIndex = symt_ptr2index(pair.effective, type);
-
+ Symbol->Index = Symbol->TypeIndex = symt_ptr2index(pair.effective, type);
+ if (Symbol->MaxNameLen)
+ {
+ name = symt_get_name(type);
+ Symbol->NameLen = min(strlen(name), Symbol->MaxNameLen - 1);
+ memcpy(Symbol->Name, name, Symbol->NameLen);
+ Symbol->Name[Symbol->NameLen] = '\0';
+ }
+ else
+ Symbol->NameLen = 0;
+ symt_get_info(pair.effective, type, TI_GET_LENGTH, &size);
+ Symbol->Size = size;
+ Symbol->ModBase = pair.requested->module.BaseOfImage;
+ Symbol->Tag = type->tag;
return TRUE;
}
More information about the wine-devel
mailing list