Commit fac74963 authored by Eric Pouech's avatar Eric Pouech Committed by Alexandre Julliard

winedbg: Fix the way array derefs are done.

parent a61e1177
......@@ -310,26 +310,26 @@ BOOL types_array_index(const struct dbg_lvalue* lvalue, int index,
DWORD64 length;
if (!types_get_real_type(&type, &tag)) return FALSE;
/* Contents of array share same data (addr mode, module...) */
*result = *lvalue;
switch (tag)
{
case SymTagArrayType:
types_get_info(&type, TI_GET_COUNT, &count);
if (index < 0 || index >= count) return FALSE;
/* fall through */
break;
case SymTagPointerType:
/* Contents of array share same data (addr mode, module...) */
*result = *lvalue;
/*
* Get the base type, so we know how much to index by.
*/
types_get_info(&type, TI_GET_TYPE, &result->type.id);
types_get_info(&result->type, TI_GET_LENGTH, &length);
memory_read_value(lvalue, sizeof(result->addr.Offset), &result->addr.Offset);
result->addr.Offset += index * (DWORD)length;
break;
default:
assert(FALSE);
}
/*
* Get the base type, so we know how much to index by.
*/
types_get_info(&type, TI_GET_TYPE, &result->type.id);
types_get_info(&result->type, TI_GET_LENGTH, &length);
result->addr.Offset += index * (DWORD)length;
return TRUE;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment