[PATCH] [WineDbg]: fix the way array derefs are done
Eric Pouech
eric.pouech at orange.fr
Sun Mar 29 10:21:55 CDT 2009
A+
---
programs/winedbg/types.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/programs/winedbg/types.c b/programs/winedbg/types.c
index ef5469f..8d3dabc 100644
--- a/programs/winedbg/types.c
+++ b/programs/winedbg/types.c
@@ -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;
}
More information about the wine-patches
mailing list