From 4b0adcc66a82a731d97e5fcdea63a506d0d3ae5c Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Thu, 13 Jun 2024 08:34:25 -0400 Subject: [PATCH] avoid segfaults when updating charts in simulations with fast thermo output --- tools/lammps-gui/lammpsgui.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/tools/lammps-gui/lammpsgui.cpp b/tools/lammps-gui/lammpsgui.cpp index 4b0f7370dc..a78d891318 100644 --- a/tools/lammps-gui/lammpsgui.cpp +++ b/tools/lammps-gui/lammpsgui.cpp @@ -852,14 +852,19 @@ void LammpsGui::logupdate() } for (int i = 0; i < ncols; ++i) { - int datatype = *(int *)lammps.last_thermo("type", i); + int datatype = -1; double data = 0.0; - if (datatype == 0) // int - data = *(int *)lammps.last_thermo("data", i); - else if (datatype == 2) // double - data = *(double *)lammps.last_thermo("data", i); - else if (datatype == 4) // bigint - data = (double)*(int64_t *)lammps.last_thermo("data", i); + void *ptr = lammps.last_thermo("type", i); + if (ptr) datatype = *(int *)ptr; + ptr = lammps.last_thermo("data", i); + if (ptr) { + if (datatype == 0) // int + data = *(int *)ptr; + else if (datatype == 2) // double + data = *(double *)ptr; + else if (datatype == 4) // bigint + data = (double)*(int64_t *)ptr; + } chartwindow->add_data(step, data, i); } }