msi: Fix integer conversion in get_table_value_from_record.
This commit is contained in:
parent
7dfdcf3034
commit
1257db2109
|
@ -1259,6 +1259,7 @@ static UINT get_table_value_from_record( MSITABLEVIEW *tv, MSIRECORD *rec, UINT
|
|||
{
|
||||
MSICOLUMNINFO columninfo;
|
||||
UINT r;
|
||||
int ival;
|
||||
|
||||
if ( (iField <= 0) ||
|
||||
(iField > tv->num_cols) ||
|
||||
|
@ -1285,16 +1286,21 @@ static UINT get_table_value_from_record( MSITABLEVIEW *tv, MSIRECORD *rec, UINT
|
|||
}
|
||||
else if ( bytes_per_column( tv->db, &columninfo, LONG_STR_BYTES ) == 2 )
|
||||
{
|
||||
*pvalue = 0x8000 + MSI_RecordGetInteger( rec, iField );
|
||||
if ( *pvalue & 0xffff0000 )
|
||||
ival = MSI_RecordGetInteger( rec, iField );
|
||||
if (ival == 0x80000000) *pvalue = 0x8000;
|
||||
else
|
||||
{
|
||||
ERR("field %u value %d out of range\n", iField, *pvalue - 0x8000);
|
||||
return ERROR_FUNCTION_FAILED;
|
||||
*pvalue = 0x8000 + MSI_RecordGetInteger( rec, iField );
|
||||
if (*pvalue & 0xffff0000)
|
||||
{
|
||||
ERR("field %u value %d out of range\n", iField, *pvalue - 0x8000);
|
||||
return ERROR_FUNCTION_FAILED;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
INT ival = MSI_RecordGetInteger( rec, iField );
|
||||
ival = MSI_RecordGetInteger( rec, iField );
|
||||
*pvalue = ival ^ 0x80000000;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue