From 750575ccf29c6ae1a478ef4f81f6d1054ef926c3 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Mon, 19 Dec 2005 18:20:47 +0100 Subject: [PATCH] dbghelp: Return proper size for local & parameters in SYMBOL_INFO. --- dlls/dbghelp/dbghelp_private.h | 2 +- dlls/dbghelp/symbol.c | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/dlls/dbghelp/dbghelp_private.h b/dlls/dbghelp/dbghelp_private.h index d2445cd63a9..12911623514 100644 --- a/dlls/dbghelp/dbghelp_private.h +++ b/dlls/dbghelp/dbghelp_private.h @@ -142,7 +142,7 @@ struct symt_data unsigned long address; /* DataIs{Global, FileStatic} */ struct { - long offset; /* DataIs{Member,Local,Param} in bits*/ + long offset; /* DataIs{Member,Local,Param} in bits */ unsigned long length; /* DataIs{Member} in bits */ unsigned long reg_id; /* DataIs{Local} (0 if frame relative) */ } s; diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c index 29e7d1f2bc5..74634d17f61 100644 --- a/dlls/dbghelp/symbol.c +++ b/dlls/dbghelp/symbol.c @@ -448,7 +448,10 @@ static void symt_fill_sym_info(const struct module* module, if (!symt_get_info(sym, TI_GET_TYPE, &sym_info->TypeIndex)) sym_info->TypeIndex = 0; sym_info->info = (DWORD)sym; - symt_get_info(sym, TI_GET_LENGTH, &size); + if (!symt_get_info(sym, TI_GET_LENGTH, &size) && + sym_info->TypeIndex && + !symt_get_info((struct symt*)sym_info->TypeIndex, TI_GET_LENGTH, &size)) + size = 0; sym_info->Size = (DWORD)size; sym_info->ModBase = module->module.BaseOfImage; sym_info->Flags = 0; -- 2.11.4.GIT