1
0
Fork 0
x64dbg/x64_dbg_gui/Project/Src/Utils/ValidateExpressionThread.cpp

48 lines
1.2 KiB
C++

#include "ValidateExpressionThread.h"
ValidateExpressionThread::ValidateExpressionThread(QObject* parent) : QThread(parent)
{
mExpressionChanged = false;
mStopThread = false;
}
void ValidateExpressionThread::start()
{
mStopThread = false;
QThread::start();
}
void ValidateExpressionThread::stop()
{
mStopThread = true;
}
void ValidateExpressionThread::textChanged(QString text)
{
mExpressionMutex.lock();
if(mExpressionText != text)
mExpressionChanged = true;
mExpressionText = text;
mExpressionMutex.unlock();
}
void ValidateExpressionThread::run()
{
while(!mStopThread)
{
mExpressionMutex.lock();
QString expression = mExpressionText;
bool changed = mExpressionChanged;
mExpressionChanged = false;
mExpressionMutex.unlock();
if(changed)
{
duint value;
bool validExpression = DbgFunctions()->ValFromString(expression.toUtf8().constData(), &value);
bool validPointer = validExpression && DbgMemIsValidReadPtr(value);
emit expressionChanged(validExpression, validPointer, value);
}
Sleep(50);
}
}