mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-14 20:28:26 +00:00
winedbg: Do not write over const char * parameter.
Also pass the right string to SymEnumSymbols and check for _ in symbol name, instead of beginning of string.
This commit is contained in:
parent
719a02856d
commit
e879efcc74
|
@ -239,23 +239,27 @@ enum sym_get_lval symbol_get_lvalue(const char* name, const int lineno,
|
||||||
SymSetOptions((opt = SymGetOptions()) | 0x40000000);
|
SymSetOptions((opt = SymGetOptions()) | 0x40000000);
|
||||||
SymEnumSymbols(dbg_curr_process->handle, 0, buffer, sgv_cb, (void*)&sgv);
|
SymEnumSymbols(dbg_curr_process->handle, 0, buffer, sgv_cb, (void*)&sgv);
|
||||||
|
|
||||||
if (!sgv.num && (name[0] != '_'))
|
if (!sgv.num)
|
||||||
{
|
{
|
||||||
char* ptr = strchr(name, '!');
|
const char* ptr = strchr(name, '!');
|
||||||
|
if ((ptr && ptr[1] != '_') || (!ptr && *name != '_'))
|
||||||
if (ptr++)
|
|
||||||
{
|
{
|
||||||
memmove(ptr + 1, ptr, strlen(ptr));
|
if (ptr)
|
||||||
*ptr = '_';
|
{
|
||||||
|
int offset = ptr - name;
|
||||||
|
memcpy(buffer, name, offset + 1);
|
||||||
|
buffer[offset + 1] = '_';
|
||||||
|
strcpy(&buffer[offset + 2], ptr + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
buffer[0] = '*';
|
||||||
|
buffer[1] = '!';
|
||||||
|
buffer[2] = '_';
|
||||||
|
strcpy(&buffer[3], name);
|
||||||
|
}
|
||||||
|
SymEnumSymbols(dbg_curr_process->handle, 0, buffer, sgv_cb, (void*)&sgv);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
buffer[0] = '*';
|
|
||||||
buffer[1] = '!';
|
|
||||||
buffer[2] = '_';
|
|
||||||
strcpy(&buffer[3], name);
|
|
||||||
}
|
|
||||||
SymEnumSymbols(dbg_curr_process->handle, 0, buffer, sgv_cb, (void*)&sgv);
|
|
||||||
}
|
}
|
||||||
SymSetOptions(opt);
|
SymSetOptions(opt);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue