aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrideout <rideout@6a38eb6e-646e-4a02-a296-d141613ad6c4>2003-05-14 14:44:34 +0000
committerrideout <rideout@6a38eb6e-646e-4a02-a296-d141613ad6c4>2003-05-14 14:44:34 +0000
commitf7a364131e9fb50df18959975473a42de6da8770 (patch)
tree9f333d358d87c439845e28222b55b1cc8bf12a6e
parent6fa8e9ba378c8037676bbdab7d51d984fb00e674 (diff)
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
-rw-r--r--src/Boundary.c31
-rw-r--r--src/CopyBoundary.c10
-rw-r--r--src/FlatBoundary.c8
-rw-r--r--src/RadiationBoundary.c8
-rw-r--r--src/RobinBoundary.c8
-rw-r--r--src/ScalarBoundary.c8
-rw-r--r--src/StaticBoundary.c8
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;
}