mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Core: dynamically allocate the result of get_gas_used()
get_gas_used() returns the volume of used gases. Currently, an array with MAX_CYLINDERS is passed in. If we want to make the number of cylinders dynamic, the function must use an arbitrarilly sized array. Therefore, return a dynamically allocated array and free it in the caller. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
f179ec033f
commit
11467fa326
5 changed files with 16 additions and 10 deletions
|
@ -359,10 +359,13 @@ bool is_cylinder_prot(const struct dive *dive, int idx)
|
|||
return false;
|
||||
}
|
||||
|
||||
void get_gas_used(struct dive *dive, volume_t gases[MAX_CYLINDERS])
|
||||
/* Returns a dynamically allocated array with MAX_CYLINDERS entries that
|
||||
* has to be freed by the caller */
|
||||
volume_t *get_gas_used(struct dive *dive)
|
||||
{
|
||||
int idx;
|
||||
|
||||
volume_t *gases = malloc(MAX_CYLINDERS * sizeof(volume_t));
|
||||
for (idx = 0; idx < MAX_CYLINDERS; idx++) {
|
||||
cylinder_t *cyl = &dive->cylinder[idx];
|
||||
pressure_t start, end;
|
||||
|
@ -372,6 +375,8 @@ void get_gas_used(struct dive *dive, volume_t gases[MAX_CYLINDERS])
|
|||
if (end.mbar && start.mbar > end.mbar)
|
||||
gases[idx].mliter = gas_volume(cyl, start) - gas_volume(cyl, end);
|
||||
}
|
||||
|
||||
return gases;
|
||||
}
|
||||
|
||||
/* Quite crude reverse-blender-function, but it produces a approx result */
|
||||
|
@ -397,8 +402,7 @@ void selected_dives_gas_parts(volume_t *o2_tot, volume_t *he_tot)
|
|||
for_each_dive (i, d) {
|
||||
if (!d->selected)
|
||||
continue;
|
||||
volume_t diveGases[MAX_CYLINDERS] = {};
|
||||
get_gas_used(d, diveGases);
|
||||
volume_t *diveGases = get_gas_used(d);
|
||||
for (j = 0; j < MAX_CYLINDERS; j++) {
|
||||
if (diveGases[j].mliter) {
|
||||
volume_t o2 = {}, he = {};
|
||||
|
@ -407,5 +411,6 @@ void selected_dives_gas_parts(volume_t *o2_tot, volume_t *he_tot)
|
|||
he_tot->mliter += he.mliter;
|
||||
}
|
||||
}
|
||||
free(diveGases);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue