Undo: Make PasteState cylinders list dynamically allocated

Instead of using a sub-array, use a std::vector<>. This is
a necessary step in removing the MAX_CYLINDERS restriction.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-06-29 10:27:48 +02:00 committed by Dirk Hohndel
parent 16bdbc54b9
commit 77e5dbac73
2 changed files with 7 additions and 4 deletions

View file

@ -687,7 +687,8 @@ static void swapCandQString(QString &q, char *&c)
}
PasteState::PasteState(dive *dIn, const dive *data, dive_components what) : d(dIn),
tags(nullptr)
tags(nullptr),
cylinders(MAX_CYLINDERS)
{
memset(&cylinders[0], 0, sizeof(cylinders));
memset(&weightsystems, 0, sizeof(weightsystems));
@ -742,8 +743,10 @@ void PasteState::swap(dive_components what)
std::swap(divesite, d->dive_site);
if (what.tags)
std::swap(tags, d->tag_list);
if (what.cylinders)
std::swap(cylinders, d->cylinder);
if (what.cylinders) {
for (int i = 0; i < MAX_CYLINDERS; ++i)
std::swap(cylinders[i], d->cylinder[i]);
}
if (what.weights)
std::swap(weightsystems, d->weightsystems);
}

View file

@ -246,7 +246,7 @@ struct PasteState {
int rating;
int visibility;
tag_entry *tags;
cylinder_t cylinders[MAX_CYLINDERS];
std::vector<cylinder_t> cylinders;
struct weightsystem_table weightsystems;
PasteState(dive *d, const dive *data, dive_components what); // Read data from dive data for dive d