mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Update cylinder info properly
The "cylinders_equal()/copy_cylinders()" functions were buggered, and only checked (and copied) the cylinder type. That was on purpose, since you do want to be able to change the type of a cylinder without changing the gasmix of the cylinder. HOWEVER, the reverse is also true: you may want to change the gasmix of a cylinder without changing the type. So it's not that the type of the cylinder is special - it's that the type and the gasmix should be considered separately. Do that properly for the equipment editing case. Reported-by: Ďoďo <dodo.sk@gmail.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
37760d830f
commit
6ae67f96f8
3 changed files with 81 additions and 40 deletions
34
equipment.c
34
equipment.c
|
|
@ -485,40 +485,6 @@ gboolean description_equal(const char *desc1, const char *desc2)
|
|||
(desc1 && desc2 && strcmp(desc1, desc2) == 0));
|
||||
}
|
||||
|
||||
/* when checking for the same cylinder we want the size and description to match
|
||||
but don't compare the start and end pressures, nor the Nitrox/He values */
|
||||
static gboolean one_cylinder_equal(cylinder_t *cyl1, cylinder_t *cyl2)
|
||||
{
|
||||
return cyl1->type.size.mliter == cyl2->type.size.mliter &&
|
||||
cyl1->type.workingpressure.mbar == cyl2->type.workingpressure.mbar &&
|
||||
description_equal(cyl1->type.description, cyl2->type.description);
|
||||
}
|
||||
|
||||
gboolean cylinders_equal(cylinder_t *cyl1, cylinder_t *cyl2)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MAX_CYLINDERS; i++)
|
||||
if (!one_cylinder_equal(cyl1 + i, cyl2 + i))
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* copy size and description of all cylinders from cyl1 to cyl2 */
|
||||
void copy_cylinders(cylinder_t *cyl1, cylinder_t *cyl2)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MAX_CYLINDERS; i++) {
|
||||
cyl2[i].type.size.mliter = cyl1[i].type.size.mliter;
|
||||
cyl2[i].type.workingpressure.mbar = cyl1[i].type.workingpressure.mbar;
|
||||
if (cyl1[i].type.description)
|
||||
cyl2[i].type.description = strdup(cyl1[i].type.description);
|
||||
else
|
||||
cyl2[i].type.description = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean weightsystem_none(void *_data)
|
||||
{
|
||||
weightsystem_t *ws = _data;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue