From a044d9b8cd9130b827100dab78c352e57b3ac80f Mon Sep 17 00:00:00 2001 From: Gareth Tribello <gareth.tribello@gmail.com> Date: Thu, 13 Apr 2017 16:51:16 -0300 Subject: [PATCH] Added flag to prevent use storage of large vectors of derivatives in multicolvar. Prior to this change a misuse of the LOWMEM keyword could cause segfaults. Now these cases crash with an error. --- src/vesselbase/StoreDataVessel.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/vesselbase/StoreDataVessel.cpp b/src/vesselbase/StoreDataVessel.cpp index fbbc67650..fae6bcf27 100644 --- a/src/vesselbase/StoreDataVessel.cpp +++ b/src/vesselbase/StoreDataVessel.cpp @@ -52,6 +52,9 @@ void StoreDataVessel::resize(){ nspace = 1; active_der.resize( max_lowmem_stash * ( 1 + getAction()->getNumberOfDerivatives() ) ); } else { + if( getAction()->getNumberOfDerivatives()>getAction()->maxderivatives ){ + error("not enough memory to store derivatives for action " + getAction()->getLabel() + " use LOWMEM option"); + } nspace = 1 + getAction()->maxderivatives; active_der.resize( getNumberOfStoredValues() * ( 1 + getAction()->maxderivatives ) ); } -- GitLab