From ac3b817d80aea067433ed5074e86d2e22a5dfaa8 Mon Sep 17 00:00:00 2001 From: Eric Pouech Date: Wed, 6 Feb 2008 21:55:28 +0100 Subject: [PATCH] dbghelp: Added support for some V3 fields in structure parsing. --- dlls/dbghelp/msc.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/dlls/dbghelp/msc.c b/dlls/dbghelp/msc.c index 2bc1d286043..12dcf4b34d5 100644 --- a/dlls/dbghelp/msc.c +++ b/dlls/dbghelp/msc.c @@ -659,6 +659,11 @@ static int codeview_add_type_struct_field_list(struct codeview_type_parse* ctp, ptr += 2 + 4 + 2 + (1 + type->stmember_v2.p_name.namelen); break; + case LF_STMEMBER_V3: + /* FIXME: ignored for now */ + ptr += 2 + 4 + 2 + (strlen(type->stmember_v3.name) + 1); + break; + case LF_METHOD_V1: /* FIXME: ignored for now */ ptr += 2 + 2 + 2 + (1 + type->method_v1.p_name.namelen); @@ -669,6 +674,11 @@ static int codeview_add_type_struct_field_list(struct codeview_type_parse* ctp, ptr += 2 + 2 + 4 + (1 + type->method_v2.p_name.namelen); break; + case LF_METHOD_V3: + /* FIXME: ignored for now */ + ptr += 2 + 2 + 4 + (strlen(type->method_v3.name) + 1); + break; + case LF_NESTTYPE_V1: /* FIXME: ignored for now */ ptr += 2 + 2 + (1 + type->nesttype_v1.p_name.namelen); @@ -679,6 +689,11 @@ static int codeview_add_type_struct_field_list(struct codeview_type_parse* ctp, ptr += 2 + 2 + 4 + (1 + type->nesttype_v2.p_name.namelen); break; + case LF_NESTTYPE_V3: + /* FIXME: ignored for now */ + ptr += 2 + 2 + 4 + (strlen(type->nesttype_v3.name) + 1); + break; + case LF_VFUNCTAB_V1: /* FIXME: ignored for now */ ptr += 2 + 2; @@ -717,6 +732,20 @@ static int codeview_add_type_struct_field_list(struct codeview_type_parse* ctp, } break; + case LF_ONEMETHOD_V3: + /* FIXME: ignored for now */ + switch ((type->onemethod_v3.attribute >> 2) & 7) + { + case 4: case 6: /* (pure) introducing virtual method */ + ptr += 2 + 2 + 4 + 4 + (strlen(type->onemethod_virt_v3.name) + 1); + break; + + default: + ptr += 2 + 2 + 4 + (strlen(type->onemethod_v3.name) + 1); + break; + } + break; + default: FIXME("Unsupported type %04x in STRUCT field list\n", type->generic.id); return FALSE;