Access pointer data only if it is not NULL (#809)

This PR solves the GitHub issue #808
This commit is contained in:
Victor A. Paludetto Magri 2023-01-05 16:16:22 -05:00 committed by GitHub
parent 2b1dd32d10
commit 79e4ddb5a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 50 deletions

View File

@ -161,10 +161,12 @@ HYPRE_SStructMatrixDestroy( HYPRE_SStructMatrix matrix )
hypre_SStructPGrid *pgrid;
HYPRE_Int nvars;
HYPRE_Int part, var;
HYPRE_MemoryLocation memory_location = hypre_SStructMatrixMemoryLocation(matrix);
HYPRE_MemoryLocation memory_location;
if (matrix)
{
memory_location = hypre_SStructMatrixMemoryLocation(matrix);
hypre_SStructMatrixRefCount(matrix) --;
if (hypre_SStructMatrixRefCount(matrix) == 0)
{

View File

@ -79,12 +79,13 @@ HYPRE_SStructVectorDestroy( HYPRE_SStructVector vector )
hypre_SStructPVector **pvectors;
HYPRE_Int part;
HYPRE_Int vector_type;
HYPRE_MemoryLocation memory_location = hypre_SStructVectorMemoryLocation(vector);
HYPRE_MemoryLocation memory_location;
/* GEC1002 destroying data indices and data in vector */
if (vector)
{
memory_location = hypre_SStructVectorMemoryLocation(vector);
vector_type = hypre_SStructVectorObjectType(vector);
hypre_SStructVectorRefCount(vector) --;
if (hypre_SStructVectorRefCount(vector) == 0)

View File

@ -134,67 +134,70 @@ hypre_CommInfoDestroy( hypre_CommInfo *comm_info )
HYPRE_Int **transforms;
HYPRE_Int i, size;
size = hypre_BoxArrayArraySize(hypre_CommInfoSendBoxes(comm_info));
hypre_BoxArrayArrayDestroy(hypre_CommInfoSendBoxes(comm_info));
processes = hypre_CommInfoSendProcesses(comm_info);
for (i = 0; i < size; i++)
{
hypre_TFree(processes[i], HYPRE_MEMORY_HOST);
}
hypre_TFree(processes, HYPRE_MEMORY_HOST);
rboxnums = hypre_CommInfoSendRBoxnums(comm_info);
if (rboxnums != NULL)
if (comm_info)
{
size = hypre_BoxArrayArraySize(hypre_CommInfoSendBoxes(comm_info));
hypre_BoxArrayArrayDestroy(hypre_CommInfoSendBoxes(comm_info));
processes = hypre_CommInfoSendProcesses(comm_info);
for (i = 0; i < size; i++)
{
hypre_TFree(rboxnums[i], HYPRE_MEMORY_HOST);
hypre_TFree(processes[i], HYPRE_MEMORY_HOST);
}
hypre_TFree(rboxnums, HYPRE_MEMORY_HOST);
}
hypre_BoxArrayArrayDestroy(hypre_CommInfoSendRBoxes(comm_info));
transforms = hypre_CommInfoSendTransforms(comm_info);
if (transforms != NULL)
{
for (i = 0; i < size; i++)
hypre_TFree(processes, HYPRE_MEMORY_HOST);
rboxnums = hypre_CommInfoSendRBoxnums(comm_info);
if (rboxnums != NULL)
{
hypre_TFree(transforms[i], HYPRE_MEMORY_HOST);
for (i = 0; i < size; i++)
{
hypre_TFree(rboxnums[i], HYPRE_MEMORY_HOST);
}
hypre_TFree(rboxnums, HYPRE_MEMORY_HOST);
}
hypre_BoxArrayArrayDestroy(hypre_CommInfoSendRBoxes(comm_info));
transforms = hypre_CommInfoSendTransforms(comm_info);
if (transforms != NULL)
{
for (i = 0; i < size; i++)
{
hypre_TFree(transforms[i], HYPRE_MEMORY_HOST);
}
hypre_TFree(transforms, HYPRE_MEMORY_HOST);
}
hypre_TFree(transforms, HYPRE_MEMORY_HOST);
}
size = hypre_BoxArrayArraySize(hypre_CommInfoRecvBoxes(comm_info));
hypre_BoxArrayArrayDestroy(hypre_CommInfoRecvBoxes(comm_info));
processes = hypre_CommInfoRecvProcesses(comm_info);
for (i = 0; i < size; i++)
{
hypre_TFree(processes[i], HYPRE_MEMORY_HOST);
}
hypre_TFree(processes, HYPRE_MEMORY_HOST);
rboxnums = hypre_CommInfoRecvRBoxnums(comm_info);
if (rboxnums != NULL)
{
size = hypre_BoxArrayArraySize(hypre_CommInfoRecvBoxes(comm_info));
hypre_BoxArrayArrayDestroy(hypre_CommInfoRecvBoxes(comm_info));
processes = hypre_CommInfoRecvProcesses(comm_info);
for (i = 0; i < size; i++)
{
hypre_TFree(rboxnums[i], HYPRE_MEMORY_HOST);
hypre_TFree(processes[i], HYPRE_MEMORY_HOST);
}
hypre_TFree(rboxnums, HYPRE_MEMORY_HOST);
}
hypre_BoxArrayArrayDestroy(hypre_CommInfoRecvRBoxes(comm_info));
transforms = hypre_CommInfoRecvTransforms(comm_info);
if (transforms != NULL)
{
for (i = 0; i < size; i++)
hypre_TFree(processes, HYPRE_MEMORY_HOST);
rboxnums = hypre_CommInfoRecvRBoxnums(comm_info);
if (rboxnums != NULL)
{
hypre_TFree(transforms[i], HYPRE_MEMORY_HOST);
for (i = 0; i < size; i++)
{
hypre_TFree(rboxnums[i], HYPRE_MEMORY_HOST);
}
hypre_TFree(rboxnums, HYPRE_MEMORY_HOST);
}
hypre_TFree(transforms, HYPRE_MEMORY_HOST);
hypre_BoxArrayArrayDestroy(hypre_CommInfoRecvRBoxes(comm_info));
transforms = hypre_CommInfoRecvTransforms(comm_info);
if (transforms != NULL)
{
for (i = 0; i < size; i++)
{
hypre_TFree(transforms[i], HYPRE_MEMORY_HOST);
}
hypre_TFree(transforms, HYPRE_MEMORY_HOST);
}
hypre_TFree(hypre_CommInfoCoords(comm_info), HYPRE_MEMORY_HOST);
hypre_TFree(hypre_CommInfoDirs(comm_info), HYPRE_MEMORY_HOST);
hypre_TFree(comm_info, HYPRE_MEMORY_HOST);
}
hypre_TFree(hypre_CommInfoCoords(comm_info), HYPRE_MEMORY_HOST);
hypre_TFree(hypre_CommInfoDirs(comm_info), HYPRE_MEMORY_HOST);
hypre_TFree(comm_info, HYPRE_MEMORY_HOST);
return hypre_error_flag;
}