From 28bdebd3c045f078dc28293fe5fc05e1dd606787 Mon Sep 17 00:00:00 2001
From: Axel Kohlmeyer <akohlmey@gmail.com>
Date: Tue, 28 Mar 2017 07:50:48 -0400
Subject: [PATCH] avoid segfault when calling PPPM*::memory_usage() before grid
 communication is initialized

---
 src/KOKKOS/pppm_kokkos.cpp | 2 +-
 src/KSPACE/pppm.cpp        | 2 +-
 src/KSPACE/pppm_disp.cpp   | 4 ++--
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/KOKKOS/pppm_kokkos.cpp b/src/KOKKOS/pppm_kokkos.cpp
index c59bd89e51..3ad7334d2f 100644
--- a/src/KOKKOS/pppm_kokkos.cpp
+++ b/src/KOKKOS/pppm_kokkos.cpp
@@ -3158,7 +3158,7 @@ double PPPMKokkos<DeviceType>::memory_usage()
   if (peratom_allocate_flag)
     bytes += 6 * nbrick * sizeof(FFT_SCALAR);
 
-  bytes += cg->memory_usage();
+  if (cg) bytes += cg->memory_usage();
 
   return bytes;
 }
diff --git a/src/KSPACE/pppm.cpp b/src/KSPACE/pppm.cpp
index 156e867f34..80328a2d6f 100644
--- a/src/KSPACE/pppm.cpp
+++ b/src/KSPACE/pppm.cpp
@@ -3085,7 +3085,7 @@ double PPPM::memory_usage()
     bytes += 2 * nfft_both * sizeof(FFT_SCALAR);;
   }
 
-  bytes += cg->memory_usage();
+  if (cg) bytes += cg->memory_usage();
 
   return bytes;
 }
diff --git a/src/KSPACE/pppm_disp.cpp b/src/KSPACE/pppm_disp.cpp
index 315bf16e4d..5d6c2042be 100644
--- a/src/KSPACE/pppm_disp.cpp
+++ b/src/KSPACE/pppm_disp.cpp
@@ -8240,7 +8240,7 @@ double PPPMDisp::memory_usage()
     bytes += 6 * nfft_both * sizeof(double);      // vg
     bytes += nfft_both * sizeof(double);          // greensfn
     bytes += nfft_both * 3 * sizeof(FFT_SCALAR);    // density_FFT, work1, work2
-    bytes += cg->memory_usage();
+    if (cg) bytes += cg->memory_usage();
   }
 
   if (function[1] + function[2] + function[3]) {
@@ -8250,7 +8250,7 @@ double PPPMDisp::memory_usage()
     bytes += 6 * nfft_both_6 * sizeof(double);      // vg
     bytes += nfft_both_6 * sizeof(double);          // greensfn
     bytes += nfft_both_6 * (mixing + 2) * sizeof(FFT_SCALAR);    // density_FFT, work1, work2
-    bytes += cg_6->memory_usage();
+    if (cg_6) bytes += cg_6->memory_usage();
   }
   return bytes;
 }
-- 
GitLab