widl: Set a correct fpu parameter mask on 64-bit.
This commit is contained in:
parent
d9cd0d8cac
commit
e4a0483529
|
@ -1353,7 +1353,24 @@ static void write_proc_func_header( FILE *file, int indent, const type_t *iface,
|
||||||
*offset += 14;
|
*offset += 14;
|
||||||
if (pointer_size == 8)
|
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;
|
*offset += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue