diff options
-rw-r--r-- | src/SetupPGH.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/src/SetupPGH.c b/src/SetupPGH.c index cd51f16..b14088e 100644 --- a/src/SetupPGH.c +++ b/src/SetupPGH.c @@ -244,16 +244,20 @@ void PUGH_DestroyPGH (pGH **GHin) /* Great. Now go about the work of destroying me. */ variable = 0; - for(group = 0; group < CCTK_NumGroups(); group++) + for (group = CCTK_NumGroups () - 1; group >= 0; group--) { #ifdef DEBUG_PUGH - printf("Calling Destroying Group %s\n", CCTK_GroupName(group)); - fflush(stdout); + printf ("Calling Destroying Group %s\n", CCTK_GroupName (group)); + fflush (stdout); #endif - CCTK_GroupData(group,&pgroup); + CCTK_GroupData (group, &pgroup); + if (! pgroup.numvars) + { + continue; + } - GA = (pGA *) GH->variables[variable][0]; + GA = GH->variables[variable][0]; /* Destroy group comm buffers */ if (GA->groupcomm) @@ -280,28 +284,25 @@ void PUGH_DestroyPGH (pGH **GHin) for (this_var = 0; this_var < pgroup.numvars; this_var++, variable++) { - for(i = 0 ; i < pgroup.numtimelevels; i++) + for (i = 0 ; i < pgroup.numtimelevels; i++) { - PUGH_DestroyGArray(&(((pGA ***)GH->variables)[variable][i])); + PUGH_DestroyGArray (&(((pGA ***)GH->variables)[variable][i])); } - free(GH->variables[variable]); + free (GH->variables[variable]); } } - for (i=1;i<=GH->dim;i++) + for (i = 0; i < GH->dim; i++) { - PUGH_DestroyConnectivity(&GH->Connectivity[i-1]); - PUGH_DestroyPGExtras(&GH->GFExtras[i-1]); + PUGH_DestroyConnectivity (GH->Connectivity + i); + PUGH_DestroyPGExtras (GH->GFExtras + i); } - if(GH->identity_string) - { - free(GH->identity_string); - } - free(GH->Connectivity); - free(GH->GFExtras); - free(GH->variables); - free(GH); + free (GH->identity_string); + free (GH->Connectivity); + free (GH->GFExtras); + free (GH->variables); + free (GH); *GHin = NULL; } |