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