From e01e90eb965cc9862312fc2f6a5e6e061dfffd01 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Sat, 8 Oct 2016 10:45:22 -0400 Subject: [PATCH] workaround for double free issue when using USER-COLVARS with lammps code loaded as shared library into a standalone executable --- lib/colvars/colvarmodule.cpp | 12 ++++++------ lib/colvars/colvarmodule.h | 2 +- src/USER-COLVARS/colvarproxy_lammps.cpp | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/colvars/colvarmodule.cpp b/lib/colvars/colvarmodule.cpp index 050d4a2b96..a612b87cc6 100644 --- a/lib/colvars/colvarmodule.cpp +++ b/lib/colvars/colvarmodule.cpp @@ -1552,10 +1552,10 @@ std::string colvarmodule::restart_in_name = ""; // i/o constants -size_t const colvarmodule::it_width = 12; -size_t const colvarmodule::cv_prec = 14; -size_t const colvarmodule::cv_width = 21; -size_t const colvarmodule::en_prec = 14; -size_t const colvarmodule::en_width = 21; -std::string const colvarmodule::line_marker = +const size_t colvarmodule::it_width = 12; +const size_t colvarmodule::cv_prec = 14; +const size_t colvarmodule::cv_width = 21; +const size_t colvarmodule::en_prec = 14; +const size_t colvarmodule::en_width = 21; +const char * const colvarmodule::line_marker = (const char *) "----------------------------------------------------------------------\n"; diff --git a/lib/colvars/colvarmodule.h b/lib/colvars/colvarmodule.h index 454fb65b6c..0b19d1f779 100644 --- a/lib/colvars/colvarmodule.h +++ b/lib/colvars/colvarmodule.h @@ -366,7 +366,7 @@ public: /// Number of characters to represent the collective variables energy static size_t const en_width; /// Line separator in the log output - static std::string const line_marker; + static const char * const line_marker; // proxy functions diff --git a/src/USER-COLVARS/colvarproxy_lammps.cpp b/src/USER-COLVARS/colvarproxy_lammps.cpp index 5e63d07c3b..dc97db1942 100644 --- a/src/USER-COLVARS/colvarproxy_lammps.cpp +++ b/src/USER-COLVARS/colvarproxy_lammps.cpp @@ -193,7 +193,7 @@ double colvarproxy_lammps::compute() previous_step = _lmp->update->ntimestep; if (cvm::debug()) { - cvm::log(cvm::line_marker+ + cvm::log(std::string(cvm::line_marker)+ "colvarproxy_lammps, step no. "+cvm::to_str(colvars->it)+"\n"+ "Updating internal data.\n"); }