[PATCH] py-smbus: fix i2c_smbus_* error propagation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



It seems like after a switch to uapi headers the Python bindings haven't
been updated. This led to erronenous behavior every time anything but -1
is returned by i2c_smbus_* functions.

Signed-off-by: Georgii Staroselskii <georgii.staroselskii@xxxxxxxxx>
---
 py-smbus/smbusmodule.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/py-smbus/smbusmodule.c b/py-smbus/smbusmodule.c
index b189106..34af992 100644
--- a/py-smbus/smbusmodule.c
+++ b/py-smbus/smbusmodule.c
@@ -216,7 +216,7 @@ SMBus_read_byte(SMBus *self, PyObject *args)
 
 	SMBus_SET_ADDR(self, addr);
 
-	if ((result = i2c_smbus_read_byte(self->fd)) == -1) {
+	if ((result = i2c_smbus_read_byte(self->fd)) < 0) {
 		PyErr_SetFromErrno(PyExc_IOError);
 		return NULL;
 	}
@@ -239,7 +239,7 @@ SMBus_write_byte(SMBus *self, PyObject *args)
 
 	SMBus_SET_ADDR(self, addr);
 
-	if ((result = i2c_smbus_write_byte(self->fd, (__u8)val)) == -1) {
+	if ((result = i2c_smbus_write_byte(self->fd, (__u8)val)) < 0) {
 		PyErr_SetFromErrno(PyExc_IOError);
 		return NULL;
 	}
@@ -263,7 +263,7 @@ SMBus_read_byte_data(SMBus *self, PyObject *args)
 
 	SMBus_SET_ADDR(self, addr);
 
-	if ((result = i2c_smbus_read_byte_data(self->fd, (__u8)cmd)) == -1) {
+	if ((result = i2c_smbus_read_byte_data(self->fd, (__u8)cmd)) < 0) {
 		PyErr_SetFromErrno(PyExc_IOError);
 		return NULL;
 	}
@@ -287,7 +287,7 @@ SMBus_write_byte_data(SMBus *self, PyObject *args)
 	SMBus_SET_ADDR(self, addr);
 
 	if ((result = i2c_smbus_write_byte_data(self->fd,
-				(__u8)cmd, (__u8)val)) == -1) {
+				(__u8)cmd, (__u8)val)) < 0) {
 		PyErr_SetFromErrno(PyExc_IOError);
 		return NULL;
 	}
@@ -311,7 +311,7 @@ SMBus_read_word_data(SMBus *self, PyObject *args)
 
 	SMBus_SET_ADDR(self, addr);
 
-	if ((result = i2c_smbus_read_word_data(self->fd, (__u8)cmd)) == -1) {
+	if ((result = i2c_smbus_read_word_data(self->fd, (__u8)cmd)) < 0) {
 		PyErr_SetFromErrno(PyExc_IOError);
 		return NULL;
 	}
@@ -335,7 +335,7 @@ SMBus_write_word_data(SMBus *self, PyObject *args)
 	SMBus_SET_ADDR(self, addr);
 
 	if ((result = i2c_smbus_write_word_data(self->fd,
-				(__u8)cmd, (__u16)val)) == -1) {
+				(__u8)cmd, (__u16)val)) < 0) {
 		PyErr_SetFromErrno(PyExc_IOError);
 		return NULL;
 	}
@@ -360,7 +360,7 @@ SMBus_process_call(SMBus *self, PyObject *args)
 	SMBus_SET_ADDR(self, addr);
 
 	if ((result = i2c_smbus_process_call(self->fd,
-				(__u8)cmd, (__u16)val)) == -1) {
+				(__u8)cmd, (__u16)val)) < 0) {
 		PyErr_SetFromErrno(PyExc_IOError);
 		return NULL;
 	}
-- 
2.7.4




[Index of Archives]     [Linux GPIO]     [Linux SPI]     [Linux Hardward Monitoring]     [LM Sensors]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux