From af19d82b7153aa53d2fc05007e992d722619b464 Mon Sep 17 00:00:00 2001
From: Mark Watkins <jedimark@users.sourceforge.net>
Date: Sun, 10 Aug 2014 10:42:21 +1000
Subject: [PATCH] Fix large leak flagging to the end properly

---
 sleepyhead/SleepLib/calcs.cpp | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/sleepyhead/SleepLib/calcs.cpp b/sleepyhead/SleepLib/calcs.cpp
index 10de90d8..6ab8cb3e 100644
--- a/sleepyhead/SleepLib/calcs.cpp
+++ b/sleepyhead/SleepLib/calcs.cpp
@@ -1698,19 +1698,26 @@ void flagLargeLeaks(Session *session)
 
     QVector<EventList *> & EVL = session->eventlist[CPAP_Leak];
     int evlsize = EVL.size();
-    EventList * LL = nullptr;
 
+    if (evlsize == 0)
+        return;
+
+    EventList * LL = nullptr;
+    qint64 time = 0;
+    EventDataType lastvalue;
+    qint64 leaktime;
     for (int ec = 0; ec < evlsize; ++ec) {
         EventList &el = *EVL[ec];
         int count = el.count();
         if (!count) continue;
 
-        qint64 leaktime = 0;
-        EventDataType leakvalue = 0, lastvalue = -1;
+        leaktime = 0;
+        EventDataType leakvalue = 0;
+        lastvalue = -1;
 
 
         for (int i=0; i < count; ++i) {
-            qint64 time = el.time(i);
+            time = el.time(i);
             EventDataType value = el.data(i);
             if (value >= threshold) {
                 if (lastvalue < threshold) {
@@ -1728,6 +1735,14 @@ void flagLargeLeaks(Session *session)
         }
 
     }
+
+    if (lastvalue > threshold) {
+        if (!LL) {
+            LL=session->AddEventList(CPAP_LargeLeak, EVL_Event);
+        }
+        int duration = (time - leaktime) / 1000L;
+        LL->AddEvent(time, duration);
+    }
 }
 
 QMutex zMaskmutex;