Skip to content

Commit 06305b8

Browse files
committed
Fix: Assertion fail when changing any item except ascents
1 parent 47ec131 commit 06305b8

7 files changed

+27
-20
lines changed

src/dialogs/ascent_dialog.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,8 @@ static BufferRowIndex openAscentDialogAndStore(QWidget* parent, Database* db, Di
674674

675675
AscentDialog dialog(parent, db, purpose, originalAscent);
676676
if (dialog.exec() == QDialog::Accepted && (purpose != editItem || dialog.changesMade())) {
677-
Ascent* extractedAscent = dialog.extractData();
677+
const ValidItemID originalAscentID = FORCE_VALID(originalAscent->ascentID);
678+
Ascent* const extractedAscent = dialog.extractData();
678679

679680
switch (purpose) {
680681
case newItem:
@@ -695,7 +696,7 @@ static BufferRowIndex openAscentDialogAndStore(QWidget* parent, Database* db, Di
695696
}
696697

697698
// Set result to existing buffer row to signal that changes were made
698-
newAscentIndex = db->ascentsTable->getBufferIndexForPrimaryKey(FORCE_VALID(extractedAscent->ascentID));
699+
newAscentIndex = db->ascentsTable->getBufferIndexForPrimaryKey(originalAscentID);
699700
break;
700701
default:
701702
assert(false);

src/dialogs/country_dialog.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -237,18 +237,19 @@ static BufferRowIndex openCountryDialogAndStore(QWidget* parent, Database* db, D
237237

238238
CountryDialog dialog(parent, db, purpose, originalCountry);
239239
if (dialog.exec() == QDialog::Accepted && (purpose != editItem || dialog.changesMade())) {
240-
Country* extractedCountry = dialog.extractData();
240+
const ValidItemID originalCountryID = FORCE_VALID(originalCountry->countryID);
241+
Country* const extractedCountry = dialog.extractData();
241242

242243
switch (purpose) {
243244
case newItem:
244245
case duplicateItem:
245246
newCountryIndex = db->countriesTable->addRow(parent, extractedCountry);
246247
break;
247248
case editItem:
248-
db->countriesTable->updateRow(parent, FORCE_VALID(originalCountry->countryID), extractedCountry);
249+
db->countriesTable->updateRow(parent, originalCountryID, extractedCountry);
249250

250251
// Set result to existing buffer row to signal that changes were made
251-
newCountryIndex = db->countriesTable->getBufferIndexForPrimaryKey(FORCE_VALID(extractedCountry->countryID));
252+
newCountryIndex = db->countriesTable->getBufferIndexForPrimaryKey(originalCountryID);
252253
break;
253254
default:
254255
assert(false);

src/dialogs/hiker_dialog.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -244,18 +244,19 @@ static BufferRowIndex openHikerDialogAndStore(QWidget* parent, Database* db, Dia
244244

245245
HikerDialog dialog(parent, db, purpose, originalHiker);
246246
if (dialog.exec() == QDialog::Accepted && (purpose != editItem || dialog.changesMade())) {
247-
Hiker* extractedHiker = dialog.extractData();
247+
const ValidItemID originalHikerID = FORCE_VALID(originalHiker->hikerID);
248+
Hiker* const extractedHiker = dialog.extractData();
248249

249250
switch (purpose) {
250251
case newItem:
251252
case duplicateItem:
252253
newHikerIndex = db->hikersTable->addRow(parent, extractedHiker);
253254
break;
254255
case editItem:
255-
db->hikersTable->updateRow(parent, FORCE_VALID(originalHiker->hikerID), extractedHiker);
256+
db->hikersTable->updateRow(parent, originalHikerID, extractedHiker);
256257

257258
// Set result to existing buffer row to signal that changes were made
258-
newHikerIndex = db->hikersTable->getBufferIndexForPrimaryKey(FORCE_VALID(extractedHiker->hikerID));
259+
newHikerIndex = db->hikersTable->getBufferIndexForPrimaryKey(originalHikerID);
259260
break;
260261
default:
261262
assert(false);

src/dialogs/peak_dialog.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -332,18 +332,19 @@ static BufferRowIndex openPeakDialogAndStore(QWidget* parent, Database* db, Dial
332332

333333
PeakDialog dialog(parent, db, purpose, originalPeak);
334334
if (dialog.exec() == QDialog::Accepted && (purpose != editItem || dialog.changesMade())) {
335-
Peak* extractedPeak = dialog.extractData();
335+
const ValidItemID originalPeakID = FORCE_VALID(originalPeak->peakID);
336+
Peak* const extractedPeak = dialog.extractData();
336337

337338
switch (purpose) {
338339
case newItem:
339340
case duplicateItem:
340341
newPeakIndex = db->peaksTable->addRow(parent, extractedPeak);
341342
break;
342343
case editItem:
343-
db->peaksTable->updateRow(parent, FORCE_VALID(originalPeak->peakID), extractedPeak);
344+
db->peaksTable->updateRow(parent, originalPeakID, extractedPeak);
344345

345346
// Set result to existing buffer row to signal that changes were made
346-
newPeakIndex = db->peaksTable->getBufferIndexForPrimaryKey(FORCE_VALID(extractedPeak->peakID));
347+
newPeakIndex = db->peaksTable->getBufferIndexForPrimaryKey(originalPeakID);
347348
break;
348349
default:
349350
assert(false);

src/dialogs/range_dialog.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -254,18 +254,19 @@ static BufferRowIndex openRangeDialogAndStore(QWidget* parent, Database* db, Dia
254254

255255
RangeDialog dialog(parent, db, purpose, originalRange);
256256
if (dialog.exec() == QDialog::Accepted && (purpose != editItem || dialog.changesMade())) {
257-
Range* extractedRange = dialog.extractData();
257+
const ValidItemID originalRangeID = FORCE_VALID(originalRange->rangeID);
258+
Range* const extractedRange = dialog.extractData();
258259

259260
switch (purpose) {
260261
case newItem:
261262
case duplicateItem:
262263
newRangeIndex = db->rangesTable->addRow(parent, extractedRange);
263264
break;
264265
case editItem:
265-
db->rangesTable->updateRow(parent, FORCE_VALID(originalRange->rangeID), extractedRange);
266+
db->rangesTable->updateRow(parent, originalRangeID, extractedRange);
266267

267268
// Set result to existing buffer row to signal that changes were made
268-
newRangeIndex = db->rangesTable->getBufferIndexForPrimaryKey(FORCE_VALID(extractedRange->rangeID));
269+
newRangeIndex = db->rangesTable->getBufferIndexForPrimaryKey(originalRangeID);
269270
break;
270271
default:
271272
assert(false);

src/dialogs/region_dialog.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -305,18 +305,19 @@ static BufferRowIndex openRegionDialogAndStore(QWidget* parent, Database* db, Di
305305

306306
RegionDialog dialog(parent, db, purpose, originalRegion);
307307
if (dialog.exec() == QDialog::Accepted && (purpose != editItem || dialog.changesMade())) {
308-
Region* extractedRegion = dialog.extractData();
308+
const ValidItemID originalRegionID = FORCE_VALID(originalRegion->regionID);
309+
Region* const extractedRegion = dialog.extractData();
309310

310311
switch (purpose) {
311312
case newItem:
312313
case duplicateItem:
313314
newRegionIndex = db->regionsTable->addRow(parent, extractedRegion);
314315
break;
315316
case editItem:
316-
db->regionsTable->updateRow(parent, FORCE_VALID(originalRegion->regionID), extractedRegion);
317+
db->regionsTable->updateRow(parent, originalRegionID, extractedRegion);
317318

318319
// Set result to existing buffer row to signal that changes were made
319-
newRegionIndex = db->regionsTable->getBufferIndexForPrimaryKey(FORCE_VALID(extractedRegion->regionID));
320+
newRegionIndex = db->regionsTable->getBufferIndexForPrimaryKey(originalRegionID);
320321
break;
321322
default:
322323
assert(false);

src/dialogs/trip_dialog.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -304,18 +304,19 @@ static BufferRowIndex openTripDialogAndStore(QWidget* parent, Database* db, Dial
304304

305305
TripDialog dialog(parent, db, purpose, originalTrip);
306306
if (dialog.exec() == QDialog::Accepted && (purpose != editItem || dialog.changesMade())) {
307-
Trip* extractedTrip = dialog.extractData();
307+
const ValidItemID originalTripID = FORCE_VALID(originalTrip->tripID);
308+
Trip* const extractedTrip = dialog.extractData();
308309

309310
switch (purpose) {
310311
case newItem:
311312
case duplicateItem:
312313
newTripIndex = db->tripsTable->addRow(parent, extractedTrip);
313314
break;
314315
case editItem:
315-
db->tripsTable->updateRow(parent, FORCE_VALID(originalTrip->tripID), extractedTrip);
316+
db->tripsTable->updateRow(parent, originalTripID, extractedTrip);
316317

317318
// Set result to existing buffer row to signal that changes were made
318-
newTripIndex = db->tripsTable->getBufferIndexForPrimaryKey(FORCE_VALID(extractedTrip->tripID));
319+
newTripIndex = db->tripsTable->getBufferIndexForPrimaryKey(originalTripID);
319320
break;
320321
default:
321322
assert(false);

0 commit comments

Comments
 (0)