diff --git a/src/variable.cpp b/src/variable.cpp index 2bde0e5adb..c1cf978028 100644 --- a/src/variable.cpp +++ b/src/variable.cpp @@ -1660,14 +1660,16 @@ double Variable::evaluate(char *str, Tree **tree, int ivar) if (!compute->is_initialized()) print_var_error(FLERR,"Variable formula compute cannot be invoked before " "initialization by a run",ivar); + if (index1 > compute->size_array_cols) + print_var_error(FLERR,"Variable formula compute array is accessed out-of-range",ivar,0); if (!(compute->invoked_flag & Compute::INVOKED_ARRAY)) { compute->compute_array(); compute->invoked_flag |= Compute::INVOKED_ARRAY; } + // wait until after compute invocation to check size_array_rows + // b/c may be zero until after initial invocation if (compute->size_array_rows == 0) print_var_error(FLERR,"Variable formula compute array is zero length",ivar); - if (index1 > compute->size_array_cols) - print_var_error(FLERR,"Variable formula compute array is accessed out-of-range",ivar,0); auto newtree = new Tree(); newtree->type = VECTORARRAY;