widl: Store the pointer description in the type rather than base type so that it gets re-written when the type is re-written.
This commit is contained in:
parent
ccb23e8897
commit
69091ef569
@ -2315,8 +2315,7 @@ static unsigned int write_struct_tfs(FILE *file, type_t *type,
|
|||||||
/* On the sizing pass, type->ptrdesc may be zero, but it's ok as
|
/* On the sizing pass, type->ptrdesc may be zero, but it's ok as
|
||||||
nothing is written to file yet. On the actual writing pass,
|
nothing is written to file yet. On the actual writing pass,
|
||||||
this will have been updated. */
|
this will have been updated. */
|
||||||
unsigned int absoff = type_get_real_type(type)->ptrdesc ?
|
unsigned int absoff = type->ptrdesc ? type->ptrdesc : *tfsoff;
|
||||||
type_get_real_type(type)->ptrdesc : *tfsoff;
|
|
||||||
int reloff = absoff - *tfsoff;
|
int reloff = absoff - *tfsoff;
|
||||||
assert( reloff >= 0 );
|
assert( reloff >= 0 );
|
||||||
print_file(file, 2, "NdrFcShort(0x%hx),\t/* Offset= %d (%u) */\n",
|
print_file(file, 2, "NdrFcShort(0x%hx),\t/* Offset= %d (%u) */\n",
|
||||||
@ -2342,7 +2341,7 @@ static unsigned int write_struct_tfs(FILE *file, type_t *type,
|
|||||||
{
|
{
|
||||||
const var_t *f;
|
const var_t *f;
|
||||||
|
|
||||||
type_get_real_type(type)->ptrdesc = *tfsoff;
|
type->ptrdesc = *tfsoff;
|
||||||
if (fields) LIST_FOR_EACH_ENTRY(f, fields, const var_t, entry)
|
if (fields) LIST_FOR_EACH_ENTRY(f, fields, const var_t, entry)
|
||||||
{
|
{
|
||||||
type_t *ft = f->type;
|
type_t *ft = f->type;
|
||||||
@ -2367,8 +2366,8 @@ static unsigned int write_struct_tfs(FILE *file, type_t *type,
|
|||||||
write_nonsimple_pointer(file, f->attrs, ft, FALSE, offset, tfsoff);
|
write_nonsimple_pointer(file, f->attrs, ft, FALSE, offset, tfsoff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (type_get_real_type(type)->ptrdesc == *tfsoff)
|
if (type->ptrdesc == *tfsoff)
|
||||||
type_get_real_type(type)->ptrdesc = 0;
|
type->ptrdesc = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
current_structure = save_current_structure;
|
current_structure = save_current_structure;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user