diff --git a/dune/istl/solvers.hh b/dune/istl/solvers.hh index a2c88c3bde18170a4b786a3a61fc6deb4bd62493..55614e976430f167e2eb134c9d8c701d7d977385 100644 --- a/dune/istl/solvers.hh +++ b/dune/istl/solvers.hh @@ -1601,7 +1601,7 @@ namespace Dune { while(i<_maxit) { // the loop - int end=std::min(_restart, _maxit-i); + int end=std::min(_restart, _maxit-i+1); for (ii=1; ii<end; ++ii ) { //std::cout<<" ii="<<ii<<" i="<<i<<std::endl; @@ -1640,8 +1640,10 @@ namespace Dune { } if(res.converged) break; - *(p[0])=*(p[_restart-1]); - pp[0]=pp[_restart-1]; + if(end==_restart) { + *(p[0])=*(p[_restart-1]); + pp[0]=pp[_restart-1]; + } } // postprocess preconditioner