Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreutarass2010-06-28 17:44:11 +0000
committereutarass2010-06-28 17:44:11 +0000
commit0fd823bc70bc6ff1265ebe1f082aada1efb3dea7 (patch)
tree7d5e8bea521098cfaf81b6204c56bb32a49ee36d
parent3b0fa5d4bcca199c589236b9aa32e09e1b06cc48 (diff)
downloadorg.eclipse.tcf.agent-0fd823bc70bc6ff1265ebe1f082aada1efb3dea7.tar.gz
org.eclipse.tcf.agent-0fd823bc70bc6ff1265ebe1f082aada1efb3dea7.tar.xz
org.eclipse.tcf.agent-0fd823bc70bc6ff1265ebe1f082aada1efb3dea7.zip
TCF Agent: fixed: in Windows version of symbols service implementation, find_symbol() returns error if "frame" argument is STACK_TOP_FRAME
-rw-r--r--services/symbols_win32.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/services/symbols_win32.c b/services/symbols_win32.c
index 0a147377..402a2b0e 100644
--- a/services/symbols_win32.c
+++ b/services/symbols_win32.c
@@ -810,8 +810,6 @@ static int find_pe_symbol(Context * ctx, int frame, char * name, Symbol * sym) {
HANDLE process = get_context_handle(ctx->parent == NULL ? ctx : ctx->parent);
DWORD64 module;
- if (frame == STACK_TOP_FRAME) frame = get_top_frame(ctx);
- if (frame == STACK_TOP_FRAME) return -1;
if (get_stack_frame(ctx, frame, &stack_frame) < 0) return -1;
if (find_cache_symbol(ctx, frame, process, stack_frame.InstructionOffset, name, sym)) return errno ? -1 : 0;
@@ -880,6 +878,8 @@ int find_symbol(Context * ctx, int frame, char * name, Symbol ** sym) {
int found = 0;
*sym = alloc_symbol();
(*sym)->ctx = ctx;
+ if (frame == STACK_TOP_FRAME) frame = get_top_frame(ctx);
+ if (frame == STACK_TOP_FRAME) return -1;
if (find_pe_symbol(ctx, frame, name, *sym) >= 0) found = 1;
else if (get_error_code(errno) != ERR_SYM_NOT_FOUND) return -1;
#if ENABLE_RCBP_TEST
@@ -928,9 +928,9 @@ int enumerate_symbols(Context * ctx, int frame, EnumerateSymbolsCallBack * call_
symbol->SizeOfStruct = sizeof(SYMBOL_INFO);
symbol->MaxNameLen = MAX_SYM_NAME;
- if (get_stack_frame(ctx, frame, &stack_frame) < 0) {
- return -1;
- }
+ if (frame == STACK_TOP_FRAME) frame = get_top_frame(ctx);
+ if (frame == STACK_TOP_FRAME) return -1;
+ if (get_stack_frame(ctx, frame, &stack_frame) < 0) return -1;
if (!SymSetContext(process, &stack_frame, NULL)) {
DWORD err = GetLastError();

Back to the top