diff options
| author | Daniel Schemmel <daniel@schemmel.net> | 2023-10-29 16:00:02 +0000 |
|---|---|---|
| committer | MartinNowack <2443641+MartinNowack@users.noreply.github.com> | 2024-01-30 21:40:32 +0000 |
| commit | 3ca81c2dc3881aec0bbf94646c73a148d706c76d (patch) | |
| tree | 27852ee64e2148b2225f7d4dfd4e33b244be4cfd /lib/Solver/STPSolver.cpp | |
| parent | f813c88c8cb868fc9c0be78fbf92a94d72ac02b0 (diff) | |
| download | klee-3ca81c2dc3881aec0bbf94646c73a148d706c76d.tar.gz | |
Change `GetConstraintLog` to work with `std::string`s instead of `char*`s
Diffstat (limited to 'lib/Solver/STPSolver.cpp')
| -rw-r--r-- | lib/Solver/STPSolver.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
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<STPSolverImpl>(useForkedSTP, optimizeDivides)) {} -char *STPSolver::getConstraintLog(const Query &query) { +std::string STPSolver::getConstraintLog(const Query &query) { return impl->getConstraintLog(query); } |
