Skip to content

Commit f887bc6

Browse files
authored
Merge pull request #350 from HydrologicEngineeringCenter/grid-memory-leak
fix memory leaks
2 parents 65801a2 + 6c2a80a commit f887bc6

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

heclib/heclib_c/src/Public/zspatialGridStore.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ int zspatialGridStore_extended(long long* ifltab, zStructSpatialGrid* gridStruct
191191

192192
ztransfer->header2Number = numberIntsInBytes((int)total);
193193
ztransfer->header2 = (int*)calloc(ztransfer->header2Number + 2, 4);
194+
ztransfer->allocated[zSTRUCT_TRANS_header2] = 1;
194195
ztransfer->header2Mode = 1;
195196
// Need to be sure to copy char into in array, not cast and assign to header
196197
charInt(str, ztransfer->header2, (int)total, (ztransfer->header2Number * 4), 1, 1, 0);
@@ -199,6 +200,7 @@ int zspatialGridStore_extended(long long* ifltab, zStructSpatialGrid* gridStruct
199200
// Store floats: _cellSize,_xCoordOfGridCellZero,_yCoordOfGridCellZero,_nullValue
200201
ztransfer->userHeaderNumber = (4 * 2) + 3;
201202
ztransfer->userHeader = (int*)calloc(ztransfer->userHeaderNumber, 4);
203+
ztransfer->allocated[zSTRUCT_userHeader] = 1;
202204
ztransfer->userHeaderMode = 1;
203205
memset(ztransfer->userHeader, 0, ztransfer->userHeaderNumber * 4);
204206
memcpy(&ztransfer->userHeader[0], &gridStruct->_cellSize, 4);
@@ -217,6 +219,7 @@ int zspatialGridStore_extended(long long* ifltab, zStructSpatialGrid* gridStruct
217219
// Range Limits and min/max/mean values
218220
ztransfer->values1Number = gridStruct->_numberOfRanges * 2 + 3;
219221
ztransfer->values1 = (int*)calloc(ztransfer->values1Number, 4);
222+
ztransfer->allocated[zSTRUCT_TRANS_values1] = 1;
220223
ztransfer->values1Mode = 1;
221224
convertDataArray((int*)(gridStruct->_minDataValue), &ztransfer->values1[0], 1, 1, 1);
222225
convertDataArray((int*)(gridStruct->_maxDataValue), &ztransfer->values1[1], 1, 1, 1);
@@ -240,6 +243,7 @@ int zspatialGridStore_extended(long long* ifltab, zStructSpatialGrid* gridStruct
240243
internalHeader[INT_HEAD_grid_sizeofCompressedElements] = gridStruct->_sizeofCompressedElements;
241244
ztransfer->values3Number = numLongs * 2;
242245
ztransfer->values3 = (int*)dataValues;
246+
ztransfer->allocated[zSTRUCT_TRANS_values3] = 1;
243247
if (bigEndian()) {
244248
zswitchInts(ztransfer->values3, ztransfer->values3Number);
245249
}
@@ -287,6 +291,7 @@ int zspatialGridStore_extended(long long* ifltab, zStructSpatialGrid* gridStruct
287291
internalHeader[INT_HEAD_grid_sizeofCompressedElements] = gridStruct->_sizeofCompressedElements;
288292
ztransfer->values3Number = numberIntsInBytes(bufsize);
289293
ztransfer->values3 = (int*)calloc((size_t)ztransfer->values3Number + 2, 4);
294+
ztransfer->allocated[zSTRUCT_TRANS_values3] = 1;
290295
charInt((void*)buffer, (void*)ztransfer->values3, bufsize, (ztransfer->values3Number * 4), 1, 1, 0);
291296
free(buffer);
292297
free(dataValues);
@@ -333,6 +338,7 @@ int zspatialGridStore_extended(long long* ifltab, zStructSpatialGrid* gridStruct
333338
}
334339
}
335340
ztransfer->internalHeader = internalHeader;
341+
ztransfer->allocated[zSTRUCT_TRANS_internalHeader] = 1;
336342
if (bigEndian()) {
337343
zswitchInts(ztransfer->internalHeader, ztransfer->internalHeaderNumber);
338344
}

test/Dss-C/source/preCompressionGridTest.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ int gridPreCompressionTest() {
5050
status = zspatialGridRetrieve(ifltab, gridStructRetrieve2, 1);
5151

5252
gridStructRetrieve->pathname = old_pathname;
53+
free(dataValues);
5354
free(old_data);
5455
zstructFree(gridStructRetrieve2);
5556
zstructFree(gridStructRetrieve);

0 commit comments

Comments
 (0)