Merge pull request #1824 from shygoo/fix-string-search
[Debugger] Fix string search
This commit is contained in:
commit
80b6de0afb
|
@ -1652,7 +1652,7 @@ void CDebugMemorySearch::Search(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_MemoryScanner.SetValue<const char*>(value._string);
|
m_MemoryScanner.SetValue<const wchar_t*>(value._string);
|
||||||
m_MemoryScanner.SetStringValueLength(stringValueLength);
|
m_MemoryScanner.SetStringValueLength(stringValueLength);
|
||||||
break;
|
break;
|
||||||
case ValueType_unkstring:
|
case ValueType_unkstring:
|
||||||
|
@ -1662,7 +1662,7 @@ void CDebugMemorySearch::Search(void)
|
||||||
goto value_parse_error;
|
goto value_parse_error;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_MemoryScanner.SetValue<const char*>(value._string);
|
m_MemoryScanner.SetValue<const wchar_t*>(value._string);
|
||||||
m_MemoryScanner.SetStringValueLength(stringValueLength);
|
m_MemoryScanner.SetStringValueLength(stringValueLength);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -2313,7 +2313,7 @@ CEditMixed::~CEditMixed(void)
|
||||||
{
|
{
|
||||||
if (m_String != NULL)
|
if (m_String != NULL)
|
||||||
{
|
{
|
||||||
free(m_String);
|
delete[] m_String;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2331,11 +2331,11 @@ void CEditMixed::ReloadString(void)
|
||||||
{
|
{
|
||||||
if (m_String != NULL)
|
if (m_String != NULL)
|
||||||
{
|
{
|
||||||
free(m_String);
|
delete[] m_String;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_StringLength = GetWindowTextLength();
|
m_StringLength = GetWindowTextLength();
|
||||||
m_String = (wchar_t*) malloc(m_StringLength + 1);
|
m_String = new wchar_t[m_StringLength + 1];
|
||||||
GetWindowText(m_String, m_StringLength + 1);
|
GetWindowText(m_String, m_StringLength + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2526,7 +2526,7 @@ bool CEditMixed::GetValue(double& value)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CEditMixed::GetValueString(const char*& value, int& length)
|
bool CEditMixed::GetValueString(const wchar_t*& value, int& length)
|
||||||
{
|
{
|
||||||
ReloadString();
|
ReloadString();
|
||||||
|
|
||||||
|
@ -2535,12 +2535,12 @@ bool CEditMixed::GetValueString(const char*& value, int& length)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
value = (const char*)m_String;
|
value = m_String;
|
||||||
length = m_StringLength;
|
length = m_StringLength;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CEditMixed::GetValueHexString(const char*& value, int& length)
|
bool CEditMixed::GetValueHexString(const wchar_t*& value, int& length)
|
||||||
{
|
{
|
||||||
ReloadString();
|
ReloadString();
|
||||||
|
|
||||||
|
@ -2558,18 +2558,19 @@ bool CEditMixed::GetValueHexString(const char*& value, int& length)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
char *hexString = (char*)malloc(numBytes);
|
char *hexString = new char[numBytes];
|
||||||
|
wchar_t *wchexString = new wchar_t[numBytes];
|
||||||
|
|
||||||
CMemoryScanner::ParseHexString(hexString, string.c_str());
|
CMemoryScanner::ParseHexString(hexString, string.c_str());
|
||||||
wchar_t *wchexString = (wchar_t*)malloc(numBytes * sizeof(wchar_t));
|
|
||||||
wcscpy(wchexString, stdstr(hexString).ToUTF16().c_str());
|
wcscpy(wchexString, stdstr(hexString).ToUTF16().c_str());
|
||||||
|
|
||||||
free(hexString);
|
delete[] hexString;
|
||||||
free(m_String);
|
delete[] m_String;
|
||||||
|
|
||||||
m_String = wchexString;
|
m_String = wchexString;
|
||||||
m_StringLength = numBytes;
|
m_StringLength = numBytes;
|
||||||
|
|
||||||
value = (const char*)m_String;
|
value = m_String;
|
||||||
length = m_StringLength;
|
length = m_StringLength;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,8 +45,8 @@ public:
|
||||||
bool GetValue(int64_t& value);
|
bool GetValue(int64_t& value);
|
||||||
bool GetValue(float& value);
|
bool GetValue(float& value);
|
||||||
bool GetValue(double& value);
|
bool GetValue(double& value);
|
||||||
bool GetValueString(const char*& value, int& length);
|
bool GetValueString(const wchar_t*& value, int& length);
|
||||||
bool GetValueHexString(const char*& value, int& length);
|
bool GetValueHexString(const wchar_t*& value, int& length);
|
||||||
|
|
||||||
BEGIN_MSG_MAP_EX(CEditMixed)
|
BEGIN_MSG_MAP_EX(CEditMixed)
|
||||||
//MSG_WM_CHAR(OnChar)
|
//MSG_WM_CHAR(OnChar)
|
||||||
|
|
|
@ -744,7 +744,7 @@ void CMemoryScanner::FirstScanLoopString(DisplayFormat resultDisplayFormat)
|
||||||
}
|
}
|
||||||
|
|
||||||
result.m_Address = addr | m_VAddrBits;
|
result.m_Address = addr | m_VAddrBits;
|
||||||
result.Set((const char*)NULL);
|
result.Set((const wchar_t*)NULL);
|
||||||
m_Results.push_back(result);
|
m_Results.push_back(result);
|
||||||
next_addr:;
|
next_addr:;
|
||||||
}
|
}
|
||||||
|
@ -773,7 +773,7 @@ void CMemoryScanner::FirstScanLoopIString(DisplayFormat resultDisplayFormat)
|
||||||
}
|
}
|
||||||
|
|
||||||
result.m_Address = addr | m_VAddrBits;
|
result.m_Address = addr | m_VAddrBits;
|
||||||
result.Set((const char*)NULL);
|
result.Set((const wchar_t*)NULL);
|
||||||
m_Results.push_back(result);
|
m_Results.push_back(result);
|
||||||
next_addr:;
|
next_addr:;
|
||||||
}
|
}
|
||||||
|
@ -782,7 +782,7 @@ void CMemoryScanner::FirstScanLoopIString(DisplayFormat resultDisplayFormat)
|
||||||
// scan for text of unknown single-byte encoding
|
// scan for text of unknown single-byte encoding
|
||||||
void CMemoryScanner::FirstScanLoopUnkString(void)
|
void CMemoryScanner::FirstScanLoopUnkString(void)
|
||||||
{
|
{
|
||||||
const uint8_t* str = (const uint8_t*)m_Value._string;
|
const char* str = stdstr().FromUTF16(m_Value._string).c_str();
|
||||||
int length = m_StringValueLength;
|
int length = m_StringValueLength;
|
||||||
|
|
||||||
uint32_t startAddr = m_RangeStartAddress;
|
uint32_t startAddr = m_RangeStartAddress;
|
||||||
|
@ -846,7 +846,7 @@ void CMemoryScanner::FirstScanLoopUnkString(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
result.m_Address = addr | m_VAddrBits;
|
result.m_Address = addr | m_VAddrBits;
|
||||||
result.Set((const char*)NULL);
|
result.Set((const wchar_t*)NULL);
|
||||||
m_Results.push_back(result);
|
m_Results.push_back(result);
|
||||||
|
|
||||||
next_addr:;
|
next_addr:;
|
||||||
|
|
|
@ -71,7 +71,7 @@ typedef union {
|
||||||
int64_t _sint64;
|
int64_t _sint64;
|
||||||
float _float;
|
float _float;
|
||||||
double _double;
|
double _double;
|
||||||
const char* _string;
|
const wchar_t* _string;
|
||||||
} MixedValue;
|
} MixedValue;
|
||||||
|
|
||||||
class CMixed
|
class CMixed
|
||||||
|
@ -106,7 +106,7 @@ public:
|
||||||
inline void Set(int64_t v) { SetType(ValueType_int64); m_Value._sint64 = v; }
|
inline void Set(int64_t v) { SetType(ValueType_int64); m_Value._sint64 = v; }
|
||||||
inline void Set(float v) { SetType(ValueType_float); m_Value._float = v; }
|
inline void Set(float v) { SetType(ValueType_float); m_Value._float = v; }
|
||||||
inline void Set(double v) { SetType(ValueType_double); m_Value._double = v; }
|
inline void Set(double v) { SetType(ValueType_double); m_Value._double = v; }
|
||||||
inline void Set(const char* v) { SetType(ValueType_string); m_Value._string = v; }
|
inline void Set(const wchar_t* v) { SetType(ValueType_string); m_Value._string = v; }
|
||||||
|
|
||||||
inline void Get(uint8_t* v) { *v = m_Value._uint8; }
|
inline void Get(uint8_t* v) { *v = m_Value._uint8; }
|
||||||
inline void Get(int8_t* v) { *v = m_Value._sint8; }
|
inline void Get(int8_t* v) { *v = m_Value._sint8; }
|
||||||
|
@ -118,7 +118,7 @@ public:
|
||||||
inline void Get(int64_t* v) { *v = m_Value._sint64; }
|
inline void Get(int64_t* v) { *v = m_Value._sint64; }
|
||||||
inline void Get(float* v) { *v = m_Value._float; }
|
inline void Get(float* v) { *v = m_Value._float; }
|
||||||
inline void Get(double* v) { *v = m_Value._double; }
|
inline void Get(double* v) { *v = m_Value._double; }
|
||||||
inline void Get(const char** v) { *v = m_Value._string; }
|
inline void Get(const wchar_t** v) { *v = m_Value._string; }
|
||||||
|
|
||||||
const char* GetTypeName(void);
|
const char* GetTypeName(void);
|
||||||
int GetTypeSize(void);
|
int GetTypeSize(void);
|
||||||
|
|
Loading…
Reference in New Issue