Changeset: 0eb68bfa568c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0eb68bfa568c
Modified Files:
sql/backends/monet5/vaults/lidar/lidar.c
Branch: data-vaults
Log Message:
Plug more memory leaks
diffs (87 lines):
diff --git a/sql/backends/monet5/vaults/lidar/lidar.c
b/sql/backends/monet5/vaults/lidar/lidar.c
--- a/sql/backends/monet5/vaults/lidar/lidar.c
+++ b/sql/backends/monet5/vaults/lidar/lidar.c
@@ -544,12 +544,13 @@ LIDARopenFile(str fname, lidar_info *res
{
LASReaderH reader = NULL;
LASHeaderH header = NULL;
+ LASSchemaH schema = NULL;
str msg = MAL_SUCCEED;
/* check if file exists */
if (access(fname, F_OK) == -1) {
msg = createException(MAL, "lidar.openfile", "File %s not
found.", fname);
- return msg;
+
}
/* open the LAS/LAZ file */
@@ -560,7 +561,7 @@ LIDARopenFile(str fname, lidar_info *res
if (LASError_GetErrorCount() != 0) {
msg = createException(MAL, "lidar.openfile", "Error accessing
LIDAR file %s (%s)",
fname,
LASError_GetLastErrorMsg());
- return msg;
+ goto openfile_cleanup;
}
/* get the header */
@@ -568,12 +569,14 @@ LIDARopenFile(str fname, lidar_info *res
if (!header) {
msg = createException(MAL, "lidar.openfile", "Error accessing
LIDAR file %s (%s)",
fname,
LASError_GetLastErrorMsg());
- return msg;
+ goto openfile_cleanup;
}
+
#ifndef NDEBUG
print_lidar_header(stderr, header, fname, 0, 0);
#endif
+ schema = LASHeader_GetSchema(header);
/* read values from the header */
res->fileSourceId = LASHeader_GetFileSourceId(header);
res->versionMajor = LASHeader_GetVersionMajor(header);
@@ -588,8 +591,8 @@ LIDARopenFile(str fname, lidar_info *res
res->reserved = LASHeader_GetReserved(header);
res->dataRecordLength = LASHeader_GetDataRecordLength(header);
res->headerSize = LASHeader_GetHeaderSize(header);
- res->byteSize = LASSchema_GetByteSize(LASHeader_GetSchema(header));
- res->baseByteSize =
LASSchema_GetBaseByteSize(LASHeader_GetSchema(header));
+ res->byteSize = LASSchema_GetByteSize(schema);
+ res->baseByteSize = LASSchema_GetBaseByteSize(schema);
res->WKT = LASSRS_GetWKT(LASHeader_GetSRS(header));
res->WKT_CompoundOK =
LASSRS_GetWKT_CompoundOK(LASHeader_GetSRS(header));
res->proj4 = LASSRS_GetProj4(LASHeader_GetSRS(header));
@@ -609,9 +612,11 @@ LIDARopenFile(str fname, lidar_info *res
res->maxY = LASHeader_GetMaxY(header);
res->maxZ = LASHeader_GetMaxZ(header);
+openfile_cleanup:
MT_lock_set(&mt_lidar_lock);
- if (header != NULL) LASHeader_Destroy(header);
- if (reader != NULL) LASReader_Destroy(reader);
+ LASHeader_Destroy(header);
+ LASReader_Destroy(reader);
+ LASSchema_Destroy(schema);
MT_lock_unset(&mt_lidar_lock);
return msg;
@@ -936,6 +941,8 @@ LIDARattach(Client cntxt, MalBlkPtr mb,
fprintf(stderr, "Ignoring file %s:\n", filename);
fprintf(stderr, " Message: %s\n", msg);
#endif
+ GDKfree(msg);
+ msg = MAL_SUCCEED;
continue;
/* return msg; */
}
@@ -1104,6 +1111,9 @@ LIDARattach(Client cntxt, MalBlkPtr mb,
/* add a lidar_column tuple */
col = mvc_bind_column(m, lidar_col, "id");
cid = store_funcs.count_col(tr, col, 1) + 1;
+ LASString_Free(header.WKT);
+ LASString_Free(header.WKT_CompoundOK);
+ LASString_Free(header.proj4);
}
/* create an SQL table to hold the LIDAR table */
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list