PRE_MEM_READ("ioctl(VKI_I2C_SMBUS).i2c_smbus_ioctl_data.command",
(Addr)&vkis->command, sizeof(vkis->command));
/* i2c_smbus_write_quick hides its value in read_write, so
- this variable can hava a different meaning */
+ this variable can have a different meaning */
/* to make matters worse i2c_smbus_write_byte stores its
value in command */
- if ( ! (((vkis->size == VKI_I2C_SMBUS_QUICK)
- && (vkis->command == VKI_I2C_SMBUS_QUICK)) ||
+ if ( ! ((vkis->size == VKI_I2C_SMBUS_QUICK) ||
((vkis->size == VKI_I2C_SMBUS_BYTE)
&& (vkis->read_write == VKI_I2C_SMBUS_WRITE)))) {
/* the rest uses the byte array to store the data,
case VKI_I2C_SMBUS_I2C_BLOCK_BROKEN:
case VKI_I2C_SMBUS_BLOCK_PROC_CALL:
case VKI_I2C_SMBUS_I2C_BLOCK_DATA:
- size = vkis->data->block[0];
+ size = 1 + vkis->data->block[0];
break;
default:
size = 0;
struct vki_i2c_smbus_ioctl_data *vkis
= (struct vki_i2c_smbus_ioctl_data *) ARG3;
/* i2c_smbus_write_quick hides its value in read_write, so
- this variable can hava a different meaning */
- /* to make matters worse i2c_smbus_write_byte stores its
- value in command */
+ this variable can have a different meaning */
if ((vkis->read_write == VKI_I2C_SMBUS_READ)
|| (vkis->size == VKI_I2C_SMBUS_PROC_CALL)
|| (vkis->size == VKI_I2C_SMBUS_BLOCK_PROC_CALL)) {
- if ( ! ((vkis->size == VKI_I2C_SMBUS_QUICK)
- && (vkis->command == VKI_I2C_SMBUS_QUICK))) {
+ if ( ! (vkis->size == VKI_I2C_SMBUS_QUICK)) {
UInt size;
switch(vkis->size) {
case VKI_I2C_SMBUS_BYTE:
case VKI_I2C_SMBUS_I2C_BLOCK_BROKEN:
case VKI_I2C_SMBUS_BLOCK_PROC_CALL:
case VKI_I2C_SMBUS_I2C_BLOCK_DATA:
- size = vkis->data->block[0];
+ size = 1 + vkis->data->block[0];
break;
default:
size = 0;