From: Eric Pouech eric.pouech@gmail.com
When using an inline context which depth points towards the top level function (so when it's not strictly speaking an inline context), native falls back to picking information in the top level function.
So we do now in SymSetScopeFromInlineContext() and SymFromInlineContext() (instead of returning an error).
Signed-off-by: Eric Pouech eric.pouech@gmail.com --- dlls/dbghelp/dbghelp.c | 6 +++--- dlls/dbghelp/symbol.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/dlls/dbghelp/dbghelp.c b/dlls/dbghelp/dbghelp.c index c154d8d9713..df257bb4639 100644 --- a/dlls/dbghelp/dbghelp.c +++ b/dlls/dbghelp/dbghelp.c @@ -712,8 +712,6 @@ BOOL WINAPI SymSetScopeFromInlineContext(HANDLE hProcess, ULONG64 addr, DWORD in
switch (IFC_MODE(inlinectx)) { - case IFC_MODE_IGNORE: - case IFC_MODE_REGULAR: return SymSetScopeFromAddr(hProcess, addr); case IFC_MODE_INLINE: if (!module_init_pair(&pair, hProcess, addr)) return FALSE; inlined = symt_find_inlined_site(pair.effective, addr, inlinectx); @@ -723,7 +721,9 @@ BOOL WINAPI SymSetScopeFromInlineContext(HANDLE hProcess, ULONG64 addr, DWORD in pair.pcs->localscope_symt = &inlined->func.symt; return TRUE; } - return FALSE; + /* fall through */ + case IFC_MODE_IGNORE: + case IFC_MODE_REGULAR: return SymSetScopeFromAddr(hProcess, addr); default: SetLastError(ERROR_INVALID_PARAMETER); return FALSE; diff --git a/dlls/dbghelp/symbol.c b/dlls/dbghelp/symbol.c index 8e432e4be08..7b0324f5013 100644 --- a/dlls/dbghelp/symbol.c +++ b/dlls/dbghelp/symbol.c @@ -2675,9 +2675,6 @@ BOOL WINAPI SymFromInlineContext(HANDLE hProcess, DWORD64 addr, ULONG inline_ctx
switch (IFC_MODE(inline_ctx)) { - case IFC_MODE_IGNORE: - case IFC_MODE_REGULAR: - return SymFromAddr(hProcess, addr, disp, si); case IFC_MODE_INLINE: if (!module_init_pair(&pair, hProcess, addr)) return FALSE; inlined = symt_find_inlined_site(pair.effective, addr, inline_ctx); @@ -2688,6 +2685,9 @@ BOOL WINAPI SymFromInlineContext(HANDLE hProcess, DWORD64 addr, ULONG inline_ctx return TRUE; } /* fall through */ + case IFC_MODE_IGNORE: + case IFC_MODE_REGULAR: + return SymFromAddr(hProcess, addr, disp, si); default: SetLastError(ERROR_INVALID_PARAMETER); return FALSE;