widl: Set a correct fpu parameter mask on 64-bit.

This commit is contained in:
Alexandre Julliard 2011-06-08 11:51:14 +02:00
parent d9cd0d8cac
commit e4a0483529
1 changed files with 18 additions and 1 deletions

View File

@ -1353,7 +1353,24 @@ static void write_proc_func_header( FILE *file, int indent, const type_t *iface,
*offset += 14;
if (pointer_size == 8)
{
print_file( file, indent, "NdrFcShort(0x0),\n" ); /* floating point mask */
unsigned short pos = 0, fpu_mask = 0;
if (is_object( iface )) pos += 2;
if (args) LIST_FOR_EACH_ENTRY( var, args, var_t, entry )
{
if (type_get_type( var->type ) == TYPE_BASIC)
{
switch (type_basic_get_type( var->type ))
{
case TYPE_BASIC_FLOAT: fpu_mask |= 1 << pos; break;
case TYPE_BASIC_DOUBLE: fpu_mask |= 2 << pos; break;
default: break;
}
}
pos += 2;
if (pos >= 16) break;
}
print_file( file, indent, "NdrFcShort(0x%x),\n", fpu_mask ); /* floating point mask */
*offset += 2;
}
}