Fix for rarely occuring replica exchange error.
authorMichael Shirts <michael.shirts@virginia.edu>
Tue, 3 Mar 2015 17:55:32 +0000 (12:55 -0500)
committerGerrit Code Review <gerrit@gerrit.gromacs.org>
Thu, 30 Apr 2015 08:54:43 +0000 (10:54 +0200)
It could write to unallocated memory when permutations of all replicas
formed a single cycle (which is rare except for very low numbers of
replicas)

Fixes #1697

Change-Id: I23e8f7213572d3e8b9461cfdd7cb1eb790b45fe3

src/programs/mdrun/repl_ex.c

index 46a9bc0113cd1cd6755cca7903cc71128c2386f4..5db5d309cd12f340c8a69a72eee95bcf39af6031 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2011,2012,2013,2014, by the GROMACS development team, led by
+ * Copyright (c) 2011,2012,2013,2014,2015, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -400,7 +400,7 @@ gmx_repl_ex_t init_replica_exchange(FILE *fplog,
     snew(re->order, re->nrepl);
     for (i = 0; i < re->nrepl; i++)
     {
-        snew(re->cyclic[i], re->nrepl);
+        snew(re->cyclic[i], re->nrepl+1);
         snew(re->order[i], re->nrepl);
     }
     /* allocate space for the functions storing the data for the replicas */