From f9ffeddc36c783357fd689b9da744b495094703e Mon Sep 17 00:00:00 2001 From: tradke Date: Tue, 29 Jun 2004 08:40:03 +0000 Subject: Don't try to free zero-sized vector groups. This closes PR CactusPUGH/1792: "Zero sized vector groups kill PUGH". git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGH/trunk@447 b61c5cb5-eaca-4651-9a7a-d64986f99364 --- src/SetupPGH.c | 39 ++++++++++++++++++++------------------- 1 file 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; } -- cgit v1.2.3