diff --git a/AMDiS/src/PardisoSolver.cc b/AMDiS/src/PardisoSolver.cc
index 80e4ccaa829f03877b4bd2643d6a39c4dd85ab89..f53ef71cb8e7c5eb34a326ca1fc64ec6f7756e51 100644
--- a/AMDiS/src/PardisoSolver.cc
+++ b/AMDiS/src/PardisoSolver.cc
@@ -151,7 +151,7 @@ namespace AMDiS {
 
     PARDISO(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, &idum, &nRhs, 
 	    iparm, &msglvl, &ddum, &ddum, &error);
-    
+
     TEST_EXIT(error == 0)("Intel MKL Pardiso error during symbolic factorization: %d\n", error);
 
     // Numerical factorization
@@ -171,13 +171,6 @@ namespace AMDiS {
 
     TEST_EXIT(error == 0)("Intel MKL Pardiso error during solution: %d\n", error);
 
-    // Termination and release of memory
-    phase = -1;
-
-    PARDISO(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, &idum, &nRhs, 
-	    iparm, &msglvl, &ddum, &ddum, &error);    
-
-
     // Copy and resort solution.
     for (int i = 0; i < x->getSize(); i++) {
       DOFVector<double>::Iterator it(x->getDOFVector(i), USED_DOFS);
@@ -198,12 +191,17 @@ namespace AMDiS {
 
     MSG("Residual: %e\n", this->residual);
 
+    // Termination and release of memory
+    phase = -1;
+
+    PARDISO(pt, &maxfct, &mnum, &mtype, &phase, &n, a, ia, ja, &idum, &nRhs, 
+	    iparm, &msglvl, &ddum, &ddum, &error);    
 
     free(a);
     free(ja);
     free(ia);
-    free(b);
-    free(x);
+    free(bvec);
+    free(xvec);
 
     return(1);
   }