From e5d09bf374bdfecee2f176bf53956c6f40222118 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Mon, 23 Jan 2006 16:30:25 +0100 Subject: [PATCH] dbghelp: SymSetContext should return FALSE when setting twice the same frame context. --- dlls/dbghelp/dbghelp.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dlls/dbghelp/dbghelp.c b/dlls/dbghelp/dbghelp.c index 66d687d5e05..289e11385e1 100644 --- a/dlls/dbghelp/dbghelp.c +++ b/dlls/dbghelp/dbghelp.c @@ -338,6 +338,18 @@ BOOL WINAPI SymSetContext(HANDLE hProcess, PIMAGEHLP_STACK_FRAME StackFrame, struct process* pcs = process_find_by_handle(hProcess); if (!pcs) return FALSE; + if (pcs->ctx_frame.ReturnOffset == StackFrame->ReturnOffset && + pcs->ctx_frame.FrameOffset == StackFrame->FrameOffset && + pcs->ctx_frame.StackOffset == StackFrame->StackOffset) + { + TRACE("Setting same frame {rtn=%s frm=%s stk=%s}\n", + wine_dbgstr_longlong(pcs->ctx_frame.ReturnOffset), + wine_dbgstr_longlong(pcs->ctx_frame.FrameOffset), + wine_dbgstr_longlong(pcs->ctx_frame.StackOffset)); + SetLastError(ERROR_ACCESS_DENIED); /* latest MSDN says ERROR_SUCCESS */ + return FALSE; + } + pcs->ctx_frame = *StackFrame; /* MSDN states that Context is not (no longer?) used */ return TRUE; -- 2.11.4.GIT