From e4bd9bafb40c82bff5ef275528ca3dd2836672e5 Mon Sep 17 00:00:00 2001 From: "Charlton, Scott R" Date: Tue, 7 Sep 2021 19:30:34 -0700 Subject: [PATCH] [phreeqc3] fixes -Wclass-memaccess warnings for CRAN --- Phreeqc.cpp | 3 ++- ReadClass.cxx | 6 ++++-- isotopes.cpp | 20 ++++++++++++-------- mainsubs.cpp | 6 ++++-- spread.cpp | 9 +++++++-- transport.cpp | 9 ++++++--- 6 files changed, 35 insertions(+), 18 deletions(-) diff --git a/Phreeqc.cpp b/Phreeqc.cpp index 11d740c8..00febed2 100644 --- a/Phreeqc.cpp +++ b/Phreeqc.cpp @@ -1654,7 +1654,8 @@ Phreeqc::InternalCopy(const Phreeqc* pSrc) for (int i = 0; i < (int)pSrc->master_isotope.size(); i++) { class master_isotope* master_isotope_ptr = master_isotope_store(pSrc->master_isotope[i]->name, FALSE); - memcpy(master_isotope_ptr, pSrc->master_isotope[i], sizeof(class master_isotope)); + // memcpy(master_isotope_ptr, pSrc->master_isotope[i], sizeof(class master_isotope)); + *master_isotope_ptr = *pSrc->master_isotope[i]; master_isotope_ptr->name = string_hsave(pSrc->master_isotope[i]->name); int n; master_isotope_ptr->master = NULL; diff --git a/ReadClass.cxx b/ReadClass.cxx index 66f6a251..937d6575 100644 --- a/ReadClass.cxx +++ b/ReadClass.cxx @@ -753,7 +753,8 @@ run_as_cells(void) /* * save data for saving solutions */ - memcpy(&save_data, &save, sizeof(class save)); + // memcpy(&save_data, &save, sizeof(class save)); + save_data = save; /* *Copy everything to -2 */ @@ -833,7 +834,8 @@ run_as_cells(void) /* * save end of reaction */ - memcpy(&save, &save_data, sizeof(class save)); + // memcpy(&save, &save_data, sizeof(class save)); + save = save_data; if (use.Get_kinetics_in() == TRUE) { Utilities::Rxn_copy(Rxn_kinetics_map, -2, use.Get_n_kinetics_user()); diff --git a/isotopes.cpp b/isotopes.cpp index e40c6a8a..68570473 100644 --- a/isotopes.cpp +++ b/isotopes.cpp @@ -517,8 +517,9 @@ calculate_isotope_moles(class element *elt_ptr, master_isotope_ptr = master_isotope_search("H"); if ((master_isotope_ptr != NULL) && (master_isotope_ptr->elt == elt_ptr)) { - memcpy(&(list[count_isotopes]), master_isotope_ptr, - sizeof(class master_isotope)); + // memcpy(&(list[count_isotopes]), master_isotope_ptr, + // sizeof(class master_isotope)); + list[count_isotopes] = *master_isotope_ptr; list[count_isotopes].ratio = 1.0; if (list[count_isotopes].minor_isotope == FALSE) { @@ -529,8 +530,9 @@ calculate_isotope_moles(class element *elt_ptr, master_isotope_ptr = master_isotope_search("O"); if ((master_isotope_ptr != NULL) && (master_isotope_ptr->elt == elt_ptr)) { - memcpy(&(list[count_isotopes]), master_isotope_ptr, - sizeof(class master_isotope)); + // memcpy(&(list[count_isotopes]), master_isotope_ptr, + // sizeof(class master_isotope)); + list[count_isotopes] = *master_isotope_ptr; list[count_isotopes].ratio = 1.0; if (list[count_isotopes].minor_isotope == FALSE) { @@ -548,8 +550,9 @@ calculate_isotope_moles(class element *elt_ptr, continue; if (master_isotope_ptr->elt != elt_ptr) continue; - memcpy(&(list[count_isotopes]), master_isotope_ptr, - sizeof(class master_isotope)); + // memcpy(&(list[count_isotopes]), master_isotope_ptr, + // sizeof(class master_isotope)); + list[count_isotopes] = *master_isotope_ptr; if (list[count_isotopes].minor_isotope == FALSE) { total_is_major = list[count_isotopes].total_is_major; @@ -630,8 +633,9 @@ calculate_isotope_moles(class element *elt_ptr, { if (list[i].name == master_isotope[j]->name) { - memcpy(master_isotope[j], &(list[i]), - sizeof(class master_isotope)); + // memcpy(master_isotope[j], &(list[i]), + // sizeof(class master_isotope)); + *master_isotope[j] = list[i]; } } } diff --git a/mainsubs.cpp b/mainsubs.cpp index e6487ca5..0f1c714a 100644 --- a/mainsubs.cpp +++ b/mainsubs.cpp @@ -817,7 +817,8 @@ reactions(void) /* * save data for saving solutions */ - memcpy(&save_data, &save, sizeof(class save)); + // memcpy(&save_data, &save, sizeof(class save)); + save_data = save; /* *Copy everything to -2 */ @@ -880,7 +881,8 @@ reactions(void) /* * save end of reaction */ - memcpy(&save, &save_data, sizeof(class save)); + // memcpy(&save, &save_data, sizeof(class save)); + save = save_data; if (use.Get_kinetics_in() == TRUE) { Utilities::Rxn_copy(Rxn_kinetics_map, -2, use.Get_n_kinetics_user()); diff --git a/spread.cpp b/spread.cpp index 967c1c9f..77ada3e7 100644 --- a/spread.cpp +++ b/spread.cpp @@ -91,8 +91,13 @@ read_solution_spread(void) soln_defaults.iso.resize(count_iso_defaults); /* all iso[i].name is hsave'd, so no conflicts */ - memcpy(&soln_defaults.iso[0], iso_defaults, - soln_defaults.iso.size() * sizeof(class iso)); + // memcpy(&soln_defaults.iso[0], iso_defaults, + // soln_defaults.iso.size() * sizeof(class iso)); + for (size_t i = 0; i < count_iso_defaults; ++i) { + soln_defaults.iso[i].name = iso_defaults[i].name; + soln_defaults.iso[i].value = iso_defaults[i].value; + soln_defaults.iso[i].uncertainty = iso_defaults[i].uncertainty; + } heading = NULL; units = NULL; diff --git a/transport.cpp b/transport.cpp index 2f42f061..0f649fb0 100644 --- a/transport.cpp +++ b/transport.cpp @@ -2054,7 +2054,8 @@ fill_spec(int l_cell_no, int ref_cell) } for (; i1 < i2; i1++) // i1 is loop variable { - memmove(&sol_D[l_cell_no].spec[i1], &sol_D[ref_cell].spec[i1], sizeof(class spec)); + // memmove(&sol_D[l_cell_no].spec[i1], &sol_D[ref_cell].spec[i1], sizeof(class spec)); + sol_D[l_cell_no].spec[i1] = sol_D[ref_cell].spec[i1]; sol_D[l_cell_no].spec[i1].c = 0.0; sol_D[l_cell_no].spec[i1].a = 0.0; sol_D[l_cell_no].spec[i1].lm = min_dif_LM; @@ -2130,7 +2131,8 @@ fill_spec(int l_cell_no, int ref_cell) for (; i2 > i3; i2--) // i2 is loop variable sol_D[i1].spec[i2] = sol_D[i1].spec[i2 - 1]; - memmove(&sol_D[i1].spec[i2], &sol_D[l_cell_no].spec[i2], sizeof(class spec)); + // memmove(&sol_D[i1].spec[i2], &sol_D[l_cell_no].spec[i2], sizeof(class spec)); + sol_D[i1].spec[i2] = sol_D[l_cell_no].spec[i2]; sol_D[i1].spec[i2].a = 0.0; sol_D[i1].spec[i2].lm = min_dif_LM; sol_D[i1].spec[i2].lg = -0.04; @@ -2157,7 +2159,8 @@ fill_spec(int l_cell_no, int ref_cell) } for (i1 = count_spec; i1 < i3; i1++) { - memmove(&sol_D[l_cell_no].spec[i1], &sol_D[ref_cell].spec[i1], sizeof(class spec)); + // memmove(&sol_D[l_cell_no].spec[i1], &sol_D[ref_cell].spec[i1], sizeof(class spec)); + sol_D[l_cell_no].spec[i1] = sol_D[ref_cell].spec[i1]; sol_D[l_cell_no].spec[i1].c = 0.0; sol_D[l_cell_no].spec[i1].a = 0.0; sol_D[l_cell_no].spec[i1].lm = min_dif_LM;