diff --git a/src/trapping/cfrfme.cpp b/src/trapping/cfrfme.cpp
index 0f7370e96d2d09d363e5218fbed9d2d39b572ffa..5d55db92cbb9378a861dd4f60fb4ce073c429e32 100644
--- a/src/trapping/cfrfme.cpp
+++ b/src/trapping/cfrfme.cpp
@@ -381,18 +381,19 @@ void frfme(string data_file, string output_path) {
 	  for (int j80 = jlmf; j80 <= jlml; j80++) {
 	    dcomplex *vec_w = new dcomplex[nkv * nkv]();
 	    dcomplex **w = new dcomplex*[nkv];
+	    dcomplex *wk_local = new dcomplex[nlmmt]();
 	    for (int wi = 0; wi < nkv; wi++) w[wi] = vec_w + wi * nkv;
 	    int wk_index = 0;
 	    for (int jy50 = 0; jy50 < nkv; jy50++) {
 	      for (int jx50 = 0; jx50 < nkv; jx50++) {
-		for (int wi = 0; wi < nlmmt; wi++) wk[wi] = tt1->wk[wk_index++];
-		w[jx50][jy50] = wk[j80 - 1];
+		for (int wi = 0; wi < nlmmt; wi++) wk_local[wi] = tt1->wk[wk_index++];
+		w[jx50][jy50] = wk_local[j80 - 1];
 	      } // jx50
 	    } // jy50 loop
 	    int ixyz = 0;
 	    for (int wj = 0; wj < nrvc; wj++) _wsum[j80 - 1][wj] = cc0;
 	    for (int iz75 = 0; iz75 < nzv; iz75++) {
-	      double z = _zv[iz75]  + frsh;
+	      double z = _zv[iz75] + frsh;
 	      for (int iy70 = 0; iy70 < nyv; iy70++) {
 		double y = _yv[iy70];
 		for (int ix65 = 0; ix65 < nxv; ix65++) {
@@ -422,6 +423,7 @@ void frfme(string data_file, string output_path) {
 	    } // iz75 loop
 	    delete[] vec_w;
 	    delete[] w;
+	    delete[] wk_local;
 	  } // j80 loop
 #ifdef USE_NVTX
 	  nvtxRangePop();