mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	UI restructure: improve memory handling in maintab
Free strings before overwriting them. Use copy_dive() instead of just copying the dive structure. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									2cfe97e4dd
								
							
						
					
					
						commit
						20d9fafd7c
					
				
					 1 changed files with 10 additions and 3 deletions
				
			
		|  | @ -265,8 +265,8 @@ void MainTab::enableEdition(EditMode newEditMode) | |||
| 	if (MainWindow::instance() && MainWindow::instance()->dive_list()->selectedTrips().count() == 1) { | ||||
| 		// we are editing trip location and notes
 | ||||
| 		displayMessage(tr("This trip is being edited.")); | ||||
| 		displayed_dive.location = current_dive->divetrip->location; | ||||
| 		displayed_dive.notes = current_dive->divetrip->notes; | ||||
| 		displayed_dive.location = copy_string(current_dive->divetrip->location); | ||||
| 		displayed_dive.notes = copy_string(current_dive->divetrip->notes); | ||||
| 		ui.dateEdit->setEnabled(false); | ||||
| 		editMode = TRIP; | ||||
| 	} else { | ||||
|  | @ -842,7 +842,7 @@ void MainTab::rejectChanges() | |||
| 			DivePlannerPointsModel::instance()->restoreBackupDive(); | ||||
| 		} | ||||
| 		if (selected_dive >= 0) { | ||||
| 			displayed_dive = *get_dive(selected_dive); | ||||
| 			copy_dive(current_dive, &displayed_dive); | ||||
| 			cylindersModel->setDive(&displayed_dive); | ||||
| 			weightModel->setDive(&displayed_dive); | ||||
| 		} else { | ||||
|  | @ -851,6 +851,7 @@ void MainTab::rejectChanges() | |||
| 			setEnabled(false); | ||||
| 		} | ||||
| 	} | ||||
| #if 0 // this makes no sense anymore - but let's make sure I think this through
 | ||||
| 	// now let's avoid memory leaks
 | ||||
| 	if (MainWindow::instance() && MainWindow::instance()->dive_list()->selectedTrips().count() == 1) { | ||||
| 		if (displayed_dive.location != current_dive->divetrip->location) | ||||
|  | @ -866,6 +867,7 @@ void MainTab::rejectChanges() | |||
| 		FREE_IF_DIFFERENT(notes); | ||||
| 		FREE_IF_DIFFERENT(suit); | ||||
| 	} | ||||
| #endif | ||||
| 	hideMessage(); | ||||
| 	MainWindow::instance()->dive_list()->setEnabled(true); | ||||
| 	ui.dateEdit->setEnabled(true); | ||||
|  | @ -904,6 +906,7 @@ void MainTab::on_buddy_textChanged() | |||
| 	for (int i = 0; i < text_list.size(); i++) | ||||
| 		text_list[i] = text_list[i].trimmed(); | ||||
| 	QString text = text_list.join(", "); | ||||
| 	free(displayed_dive.buddy); | ||||
| 	displayed_dive.buddy = strdup(text.toUtf8().data()); | ||||
| 	markChangedWidget(ui.buddy); | ||||
| } | ||||
|  | @ -916,6 +919,7 @@ void MainTab::on_divemaster_textChanged() | |||
| 	for (int i = 0; i < text_list.size(); i++) | ||||
| 		text_list[i] = text_list[i].trimmed(); | ||||
| 	QString text = text_list.join(", "); | ||||
| 	free(displayed_dive.divemaster); | ||||
| 	displayed_dive.divemaster = strdup(text.toUtf8().data()); | ||||
| 	markChangedWidget(ui.divemaster); | ||||
| } | ||||
|  | @ -1036,6 +1040,7 @@ void MainTab::on_location_textChanged(const QString &text) | |||
| { | ||||
| 	if (editMode == NONE) | ||||
| 		return; | ||||
| 	free(displayed_dive.location); | ||||
| 	displayed_dive.location = strdup(ui.location->text().toUtf8().data()); | ||||
| 	markChangedWidget(ui.location); | ||||
| } | ||||
|  | @ -1044,6 +1049,7 @@ void MainTab::on_suit_textChanged(const QString &text) | |||
| { | ||||
| 	if (editMode == NONE) | ||||
| 		return; | ||||
| 	free(displayed_dive.suit); | ||||
| 	displayed_dive.suit = strdup(text.toUtf8().data()); | ||||
| 	markChangedWidget(ui.suit); | ||||
| } | ||||
|  | @ -1052,6 +1058,7 @@ void MainTab::on_notes_textChanged() | |||
| { | ||||
| 	if (editMode == NONE) | ||||
| 		return; | ||||
| 	free(displayed_dive.notes); | ||||
| 	displayed_dive.notes = strdup(ui.notes->toPlainText().toUtf8().data()); | ||||
| 	markChangedWidget(ui.notes); | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue