Dirk,

On 14 Sep 2015, at 18:12, Dirk Hohndel <[email protected]> wrote:

Accessing sample[-1] is not the right thing to do. So even if it may not
matter because of the way the calculation works out, we should not do
that. So I'd prefer if there was a conditional statement that prevented us
from accessing sample[-1]. 

here is a patch that does an explicit test.

Best
Robert

From 929fa3de994f3e2d1505b6f21a5a598c5c18a985 Mon Sep 17 00:00:00 2001
From: "Robert C. Helling" <[email protected]>
Date: Mon, 14 Sep 2015 11:22:32 +0200
Subject: [PATCH] Use the correct setpoint in planner

There is an unfortunate convention that the sample structure contains a setpoint
at its end rather than during its duration which causes the expression
sample[-1].setpoint in several places. This adds another one for the planner
to use the correct setpoint during the manually entered leg of the dive.

Signed-off-by: Robert C. Helling <[email protected]>
---
 planner.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/planner.c b/planner.c
index 2cf4054..a94aafb 100644
--- a/planner.c
+++ b/planner.c
@@ -137,6 +137,13 @@ void tissue_at_end(struct dive *dive, char **cached_datap)
        psample = sample = dc->sample;
 
        for (i = 0; i < dc->samples; i++, sample++) {
+               o2pressure_t setpoint;
+
+               if (i)
+                       setpoint = sample[-1].setpoint;
+               else
+                       setpoint = sample[0].setpoint;
+
                t1 = sample->time;
                get_gas_at_time(dive, dc, t0, &gas);
                if (i > 0)
@@ -165,7 +172,7 @@ void tissue_at_end(struct dive *dive, char **cached_datap)
                                max_bottom_ceiling_pressure.mbar = 
ceiling_pressure.mbar;
                }
 
-               interpolate_transition(dive, t0, t1, lastdepth, sample->depth, 
&gas, sample->setpoint);
+               interpolate_transition(dive, t0, t1, lastdepth, sample->depth, 
&gas, setpoint);
                psample = sample;
                t0 = t1;
        }
-- 
1.9.5 (Apple Git-50.3)

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to