[PATCH] staging: asus_oled: Fix bug in asus_oled where 0 is not acted upon

Sean Paul seanpaul at chromium.org
Wed Jan 18 17:00:32 UTC 2012


Fixes a bug in the asus_oled driver where values of '0' and ' ' are ignored in
append_values. The bug was introduced in commit 1ff12a4aa.

Signed-off-by: Sean Paul <seanpaul at chromium.org>
---
 drivers/staging/asus_oled/asus_oled.c |   10 ++++++++--
 1 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c
index e77e4e0..96ce29e 100644
--- a/drivers/staging/asus_oled/asus_oled.c
+++ b/drivers/staging/asus_oled/asus_oled.c
@@ -355,7 +355,13 @@ static void send_data(struct asus_oled_dev *odev)
 
 static int append_values(struct asus_oled_dev *odev, uint8_t val, size_t count)
 {
-	while (count-- > 0 && val) {
+	if (!val) {
+		odev->last_val = val;
+		odev->buf_offs += count;
+		return 0;
+	}
+
+	while (count-- > 0) {
 		size_t x = odev->buf_offs % odev->width;
 		size_t y = odev->buf_offs / odev->width;
 		size_t i;
@@ -534,7 +540,7 @@ static ssize_t odev_set_picture(struct asus_oled_dev *odev,
 			return -ENOMEM;
 		}
 
-		memset(odev->buf, 0xff, odev->buf_size);
+		memset(odev->buf, 0x00, odev->buf_size);
 
 		odev->buf_offs = 0;
 		odev->width = w;
-- 
1.7.7.3




More information about the devel mailing list