mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-09 03:52:19 +02:00
Disallow function calls in conditional breakpoints
This commit is contained in:
parent
e5f97bc618
commit
cfc25003a0
2 changed files with 11 additions and 1 deletions
|
@ -7937,6 +7937,11 @@ DbgTypedValue DbgExprEvaluator::Resolve(BfExpression* expr, DbgType* wantType)
|
||||||
SetAndRestoreValue<DbgType*> prevType(mExpectingType, wantType);
|
SetAndRestoreValue<DbgType*> prevType(mExpectingType, wantType);
|
||||||
SetAndRestoreValue<DbgTypedValue> prevResult(mResult, DbgTypedValue());
|
SetAndRestoreValue<DbgTypedValue> prevResult(mResult, DbgTypedValue());
|
||||||
|
|
||||||
|
if ((mExpressionFlags & DwEvalExpressionFlag_AllowCalls) != 0)
|
||||||
|
{
|
||||||
|
BF_ASSERT(mCallResults != NULL);
|
||||||
|
}
|
||||||
|
|
||||||
if (mExplicitThis)
|
if (mExplicitThis)
|
||||||
mExplicitThis = FixThis(mExplicitThis);
|
mExplicitThis = FixThis(mExplicitThis);
|
||||||
|
|
||||||
|
|
|
@ -3704,7 +3704,7 @@ bool WinDebugger::CheckConditionalBreakpoint(WdBreakpoint* breakpoint, DbgSubpro
|
||||||
conditional->mDbgEvaluationContext->mDbgExprEvaluator->mSubjectExpr = subjectExpr;
|
conditional->mDbgEvaluationContext->mDbgExprEvaluator->mSubjectExpr = subjectExpr;
|
||||||
conditional->mDbgEvaluationContext->mDbgExprEvaluator->mDbgCompileUnit = subprogram->mCompileUnit;
|
conditional->mDbgEvaluationContext->mDbgExprEvaluator->mDbgCompileUnit = subprogram->mCompileUnit;
|
||||||
conditional->mDbgEvaluationContext->mDbgExprEvaluator->mCallStackIdx = 0;
|
conditional->mDbgEvaluationContext->mDbgExprEvaluator->mCallStackIdx = 0;
|
||||||
conditional->mDbgEvaluationContext->mDbgExprEvaluator->mExpressionFlags = (DwEvalExpressionFlags)(DwEvalExpressionFlag_AllowSideEffects | DwEvalExpressionFlag_AllowCalls);
|
conditional->mDbgEvaluationContext->mDbgExprEvaluator->mExpressionFlags = (DwEvalExpressionFlags)(DwEvalExpressionFlag_AllowSideEffects);
|
||||||
}
|
}
|
||||||
|
|
||||||
WdStackFrame* wdStackFrame = new WdStackFrame();
|
WdStackFrame* wdStackFrame = new WdStackFrame();
|
||||||
|
@ -3726,6 +3726,11 @@ bool WinDebugger::CheckConditionalBreakpoint(WdBreakpoint* breakpoint, DbgSubpro
|
||||||
mDebugManager->mOutMessages.push_back(condError);
|
mDebugManager->mOutMessages.push_back(condError);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if (conditional->mDbgEvaluationContext->mDbgExprEvaluator->mBlockedSideEffects)
|
||||||
|
{
|
||||||
|
mDebugManager->mOutMessages.push_back(StrFormat("error Conditional breakpoint expression '%s' contained function calls, which is not allowed", conditional->mExpr.c_str()));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
else if ((!result) || (!result.mType->IsBoolean()))
|
else if ((!result) || (!result.mType->IsBoolean()))
|
||||||
{
|
{
|
||||||
mDebugManager->mOutMessages.push_back(StrFormat("error Conditional breakpoint expression '%s' must result in a boolean value", conditional->mExpr.c_str()));
|
mDebugManager->mOutMessages.push_back(StrFormat("error Conditional breakpoint expression '%s' must result in a boolean value", conditional->mExpr.c_str()));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue