From 6c905345cef0248ab2740490b63b7c3d746876b5 Mon Sep 17 00:00:00 2001 From: David Parkhurst Date: Thu, 9 May 2024 17:37:13 -0600 Subject: [PATCH 1/2] Freed result from strexpr --- src/PBasic.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/PBasic.cpp b/src/PBasic.cpp index 62d118515..44d7dfc90 100644 --- a/src/PBasic.cpp +++ b/src/PBasic.cpp @@ -3249,6 +3249,7 @@ factor(struct LOC_exec * LINK) break; } std::string min_string = min_name; + PhreeqcPtr->PHRQ_free(min_name); Utilities::str_tolower(min_string); std::map >::const_iterator it = PhreeqcPtr->rate_parameters_pk.find(min_string); if (it == PhreeqcPtr->rate_parameters_pk.end()) @@ -3420,6 +3421,7 @@ factor(struct LOC_exec * LINK) break; } std::string min_string = min_name; + PhreeqcPtr->PHRQ_free(min_name); Utilities::str_tolower(min_string); std::map >::const_iterator it = PhreeqcPtr->rate_parameters_svd.find(min_string); if (it == PhreeqcPtr->rate_parameters_svd.end()) @@ -3574,6 +3576,7 @@ factor(struct LOC_exec * LINK) break; } std::string min_string = min_name; + PhreeqcPtr->PHRQ_free(min_name); Utilities::str_tolower(min_string); std::map >::const_iterator it = PhreeqcPtr->rate_parameters_hermanska.find(min_string); if (it == PhreeqcPtr->rate_parameters_hermanska.end()) @@ -3667,6 +3670,7 @@ factor(struct LOC_exec * LINK) break; } std::string min_string = min_name; + PhreeqcPtr->PHRQ_free(min_name); Utilities::str_tolower(min_string); std::map::const_iterator it = PhreeqcPtr->mean_gammas.find(min_string); if (it == PhreeqcPtr->mean_gammas.end() || it->second.size() == 0) @@ -5403,7 +5407,9 @@ cmdput_(struct LOC_exec* LINK) require(toklp, LINK); /* get first argumen */ - std::string s_value = strexpr(LINK); + char* str = strexpr(LINK); + std::string s_value = str; + PhreeqcPtr->PHRQ_free(str); for (;;) { From ff5876b8de28770670bf2eea2c09571929a334f6 Mon Sep 17 00:00:00 2001 From: David Parkhurst Date: Thu, 9 May 2024 22:48:12 -0600 Subject: [PATCH 2/2] Pad needed a free. Ran all test cases. --- src/PBasic.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/PBasic.cpp b/src/PBasic.cpp index 44d7dfc90..8701fde15 100644 --- a/src/PBasic.cpp +++ b/src/PBasic.cpp @@ -3211,13 +3211,15 @@ factor(struct LOC_exec * LINK) case tokpad_: case tokpad: { + char* str; n.stringval = true; require(toklp, LINK); - string1 = strexpr(LINK); + str = strexpr(LINK); require(tokcomma, LINK); i = intexpr(LINK); require(tokrp, LINK); - n.UU.sval = PhreeqcPtr->string_pad(string1, i); + n.UU.sval = PhreeqcPtr->string_pad(str, i); + PhreeqcPtr->PHRQ_free(str); } break;