[PATCH v2] Only return gas volumes for gases used

Anton Lundin glance at acc.umu.se
Wed Nov 27 14:05:51 UTC 2013


We check in get_gaslist is_gas_used, so if were going to be consistent
about what we return from get_gaslist and in get_gas_used, only return
gas volumes that we actually consumed during the dive.

The problem now this fixes can be seen in dives/test10.xml

Signed-off-by: Anton Lundin <glance at acc.umu.se>
---
 statistics.c | 31 +++++++++++++++++--------------
 1 file changed, 17 insertions(+), 14 deletions(-)

diff --git a/statistics.c b/statistics.c
index 51b8d60..c4beba3 100644
--- a/statistics.c
+++ b/statistics.c
@@ -293,20 +293,6 @@ void get_selected_dives_text(char *buffer, int size)
 	}
 }
 
-void get_gas_used(struct dive *dive, volume_t gases[MAX_CYLINDERS])
-{
-	int idx;
-	for (idx = 0; idx < MAX_CYLINDERS; idx++) {
-		cylinder_t *cyl = &dive->cylinder[idx];
-		pressure_t start, end;
-
-		start = cyl->start.mbar ? cyl->start : cyl->sample_start;
-		end = cyl->end.mbar ? cyl->end : cyl->sample_end;
-		if (start.mbar && end.mbar)
-			gases[idx].mliter = gas_volume(cyl, start) - gas_volume(cyl, end);
-	}
-}
-
 bool is_gas_used(struct dive *dive, int idx)
 {
 	cylinder_t *cyl = &dive->cylinder[idx];
@@ -354,6 +340,23 @@ bool is_gas_used(struct dive *dive, int idx)
 	return used;
 }
 
+void get_gas_used(struct dive *dive, volume_t gases[MAX_CYLINDERS])
+{
+	int idx;
+	for (idx = 0; idx < MAX_CYLINDERS; idx++) {
+		cylinder_t *cyl = &dive->cylinder[idx];
+		pressure_t start, end;
+
+		if (!is_gas_used(dive, idx))
+			continue;
+
+		start = cyl->start.mbar ? cyl->start : cyl->sample_start;
+		end = cyl->end.mbar ? cyl->end : cyl->sample_end;
+		if (start.mbar && end.mbar)
+			gases[idx].mliter = gas_volume(cyl, start) - gas_volume(cyl, end);
+	}
+}
+
 #define MAXBUF 80
 /* for the O2/He readings just create a list of them */
 char *get_gaslist(struct dive *dive)
-- 
1.8.3.2



More information about the subsurface mailing list