From 4f7eca4048555de1c7b14b1dc25859ed17b329fc Mon Sep 17 00:00:00 2001
From: Fabrice Weinberg <Fabrice@weinberg.me>
Date: Sat, 9 Jul 2016 18:12:31 +0200
Subject: [PATCH] Fixes #63 by fixing display bounding check

---
 OLEDDisplay.cpp | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/OLEDDisplay.cpp b/OLEDDisplay.cpp
index 5ebb433..0184446 100644
--- a/OLEDDisplay.cpp
+++ b/OLEDDisplay.cpp
@@ -215,14 +215,18 @@ void OLEDDisplay::drawHorizontalLine(int16_t x, int16_t y, int16_t length) {
 }
 
 void OLEDDisplay::drawVerticalLine(int16_t x, int16_t y, int16_t length) {
-  if (y < 0 || y > DISPLAY_HEIGHT) return;
+  if (x < 0 || x > DISPLAY_WIDTH) return;
 
-  if (x < 0) {
-    length += x;
-    x = 0;
+  if (y < 0) {
+    length += y;
+    y = 0;
+  }
+
+  if ( (y + length) > DISPLAY_HEIGHT) {
+    length = (DISPLAY_HEIGHT - y);
   }
 
-  if (length < 0) return;
+  if (length <= 0) return;
 
 
   uint8_t yOffset = y & 7;
-- 
GitLab