From 3ca81c2dc3881aec0bbf94646c73a148d706c76d Mon Sep 17 00:00:00 2001 From: Daniel Schemmel Date: Sun, 29 Oct 2023 16:00:02 +0000 Subject: Change `GetConstraintLog` to work with `std::string`s instead of `char*`s --- lib/Solver/STPSolver.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'lib/Solver/STPSolver.cpp') diff --git a/lib/Solver/STPSolver.cpp b/lib/Solver/STPSolver.cpp index 8858e83e..7df61834 100644 --- a/lib/Solver/STPSolver.cpp +++ b/lib/Solver/STPSolver.cpp @@ -95,7 +95,7 @@ public: explicit STPSolverImpl(bool useForkedSTP, bool optimizeDivides = true); ~STPSolverImpl() override; - char *getConstraintLog(const Query &) override; + std::string getConstraintLog(const Query &) override; void setCoreSolverTimeout(time::Span timeout) override { this->timeout = timeout; } bool computeTruth(const Query &, bool &isValid) override; @@ -195,7 +195,7 @@ STPSolverImpl::~STPSolverImpl() { /***/ -char *STPSolverImpl::getConstraintLog(const Query &query) { +std::string STPSolverImpl::getConstraintLog(const Query &query) { vc_push(vc); for (const auto &constraint : query.constraints) @@ -208,7 +208,10 @@ char *STPSolverImpl::getConstraintLog(const Query &query) { vc_printQueryStateToBuffer(vc, builder->getFalse(), &buffer, &length, false); vc_pop(vc); - return buffer; + std::string result = buffer; + std::free(buffer); + + return result; } bool STPSolverImpl::computeTruth(const Query &query, bool &isValid) { @@ -432,7 +435,7 @@ SolverImpl::SolverRunStatus STPSolverImpl::getOperationStatusCode() { STPSolver::STPSolver(bool useForkedSTP, bool optimizeDivides) : Solver(std::make_unique(useForkedSTP, optimizeDivides)) {} -char *STPSolver::getConstraintLog(const Query &query) { +std::string STPSolver::getConstraintLog(const Query &query) { return impl->getConstraintLog(query); } -- cgit 1.4.1