From f7a364131e9fb50df18959975473a42de6da8770 Mon Sep 17 00:00:00 2001 From: rideout Date: Wed, 14 May 2003 14:44:34 +0000 Subject: Take advantage of fact that free and realloc can handle null pointers to simplify code. Fixes CactusBase/1509. Also fixes bug in reallocation of width_alldirs[]. git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/Boundary/trunk@234 6a38eb6e-646e-4a02-a296-d141613ad6c4 --- src/Boundary.c | 31 +++++++++---------------------- src/CopyBoundary.c | 10 +++------- src/FlatBoundary.c | 8 ++------ src/RadiationBoundary.c | 8 ++------ src/RobinBoundary.c | 8 ++------ src/ScalarBoundary.c | 8 ++------ src/StaticBoundary.c | 8 ++------ 7 files changed, 22 insertions(+), 59 deletions(-) diff --git a/src/Boundary.c b/src/Boundary.c index a94b6d2..5573be0 100644 --- a/src/Boundary.c +++ b/src/Boundary.c @@ -954,7 +954,7 @@ void Boundary_ApplyPhysicalBCs(CCTK_ARGUMENTS) struct BCDATA *current_bcdata; max_num_vars = 0; - vars = NULL; /* so that it won't be freed if it was never malloced */ + vars = NULL; /* avoids a compiler warning */ faces = NULL; /* avoids a compiler warning */ widths = NULL; /* avoids a compiler warning */ tables = NULL; /* avoids a compiler warning */ @@ -977,20 +977,10 @@ void Boundary_ApplyPhysicalBCs(CCTK_ARGUMENTS) if (num_vars > max_num_vars) { max_num_vars = num_vars; /* store new maximum */ - if (vars) - { - /* reallocate arrays if necessary */ - vars = (int *) realloc(vars, num_vars*sizeof(int)); - faces = (int *) realloc(faces, num_vars*sizeof(int)); - widths = (int *) realloc(widths, num_vars*sizeof(int)); - tables = (int *) realloc(tables, num_vars*sizeof(int)); - } else - { - vars = (int *) malloc(num_vars*sizeof(int)); - faces = (int *) malloc(num_vars*sizeof(int)); - widths = (int *) malloc(num_vars*sizeof(int)); - tables = (int *) malloc(num_vars*sizeof(int)); - } + vars = (int *) realloc(vars, num_vars*sizeof(int)); + faces = (int *) realloc(faces, num_vars*sizeof(int)); + widths = (int *) realloc(widths, num_vars*sizeof(int)); + tables = (int *) realloc(tables, num_vars*sizeof(int)); } /* get selected vars for this bc_name */ @@ -1041,13 +1031,10 @@ void Boundary_ApplyPhysicalBCs(CCTK_ARGUMENTS) } /* Free data */ - if (vars) - { - free(vars); - free(faces); - free(widths); - free(tables); - } + free(vars); + free(faces); + free(widths); + free(tables); } /*@@ diff --git a/src/CopyBoundary.c b/src/CopyBoundary.c index 278482f..e8a60b2 100644 --- a/src/CopyBoundary.c +++ b/src/CopyBoundary.c @@ -181,15 +181,11 @@ int BndCopy(const cGH *GH, int num_vars, int *vars, int *faces, int *widths, } /* Determine boundary width on all faces */ - /* allocate memory for buffer */ + /* (re-)allocate memory for buffer */ gdim = CCTK_GroupDimI(gi); - if (!width_alldirs) + if (gdim > max_gdim) { - width_alldirs = (int *) malloc(2*gdim*sizeof(int)); - max_gdim = gdim; - } else if (gdim > max_gdim) - { - width_alldirs = realloc(width_alldirs, gdim*sizeof(int)); + width_alldirs = realloc(width_alldirs, 2*gdim*sizeof(int)); max_gdim = gdim; } diff --git a/src/FlatBoundary.c b/src/FlatBoundary.c index e36eaea..be758b3 100644 --- a/src/FlatBoundary.c +++ b/src/FlatBoundary.c @@ -138,13 +138,9 @@ int BndFlat(const cGH *GH, int num_vars, int *vars, int *faces, int *widths, /* Determine boundary width on all faces */ /* allocate memory for buffer */ gdim = CCTK_GroupDimI(gi); - if (!width_alldirs) + if (gdim > max_gdim) { - width_alldirs = (int *) malloc(2*gdim*sizeof(int)); - max_gdim = gdim; - } else if (gdim > max_gdim) - { - width_alldirs = realloc(width_alldirs, gdim*sizeof(int)); + width_alldirs = realloc(width_alldirs, 2*gdim*sizeof(int)); max_gdim = gdim; } diff --git a/src/RadiationBoundary.c b/src/RadiationBoundary.c index 1b18d4b..6436f85 100644 --- a/src/RadiationBoundary.c +++ b/src/RadiationBoundary.c @@ -267,13 +267,9 @@ int BndRadiative(const cGH *GH, int num_vars, int *vars, int *faces, /* Determine boundary width on all faces */ /* allocate memory for buffer */ gdim = CCTK_GroupDimI(gi); - if (!width_alldirs) + if (gdim > max_gdim) { - width_alldirs = (int *) malloc(2*gdim*sizeof(int)); - max_gdim = gdim; - } else if (gdim > max_gdim) - { - width_alldirs = realloc(width_alldirs, gdim*sizeof(int)); + width_alldirs = realloc(width_alldirs, 2*gdim*sizeof(int)); max_gdim = gdim; } diff --git a/src/RobinBoundary.c b/src/RobinBoundary.c index c60f020..7c0caa5 100644 --- a/src/RobinBoundary.c +++ b/src/RobinBoundary.c @@ -163,13 +163,9 @@ int BndRobin(const cGH *GH, int num_vars, int *vars, int *faces, int *widths, /* Determine boundary width on all faces */ /* allocate memory for buffer */ gdim = CCTK_GroupDimI(gi); - if (!width_alldirs) + if (gdim > max_gdim) { - width_alldirs = (int *) malloc(2*gdim*sizeof(int)); - max_gdim = gdim; - } else if (gdim > max_gdim) - { - width_alldirs = realloc(width_alldirs, gdim*sizeof(int)); + width_alldirs = realloc(width_alldirs, 2*gdim*sizeof(int)); max_gdim = gdim; } diff --git a/src/ScalarBoundary.c b/src/ScalarBoundary.c index 49ad95c..0dba2af 100644 --- a/src/ScalarBoundary.c +++ b/src/ScalarBoundary.c @@ -157,13 +157,9 @@ int BndScalar(const cGH *GH, int num_vars, int *vars, int *faces, int *widths, /* Determine boundary width on all faces */ /* allocate memory for buffer */ gdim = CCTK_GroupDimI(gi); - if (!width_alldirs) + if (gdim > max_gdim) { - width_alldirs = (int *) malloc(2*gdim*sizeof(int)); - max_gdim = gdim; - } else if (gdim > max_gdim) - { - width_alldirs = realloc(width_alldirs, gdim*sizeof(int)); + width_alldirs = realloc(width_alldirs, 2*gdim*sizeof(int)); max_gdim = gdim; } diff --git a/src/StaticBoundary.c b/src/StaticBoundary.c index b1b0f3d..e4615b3 100644 --- a/src/StaticBoundary.c +++ b/src/StaticBoundary.c @@ -133,13 +133,9 @@ int BndStatic(const cGH *GH, int num_vars, int *vars, int *faces, int *widths, /* Determine boundary width on all faces */ /* allocate memory for buffer */ gdim = CCTK_GroupDimI(gi); - if (!width_alldirs) + if (gdim > max_gdim) { - width_alldirs = (int *) malloc(2*gdim*sizeof(int)); - max_gdim = gdim; - } else if (gdim > max_gdim) - { - width_alldirs = realloc(width_alldirs, gdim*sizeof(int)); + width_alldirs = realloc(width_alldirs, 2*gdim*sizeof(int)); max_gdim = gdim; } -- cgit v1.2.3