Changeset: f7a3c05b9c24 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f7a3c05b9c24
Modified Files:
sql/backends/monet5/vaults/lidar/lidar.c
Branch: data-vaults
Log Message:
Fix more memory leaks
diffs (111 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
@@ -514,6 +514,7 @@ LIDARopenFile(str fname, lidar_info *res
LASReaderH reader = NULL;
LASHeaderH header = NULL;
LASSchemaH schema = NULL;
+ LASSRSH pSRS = NULL;
str msg = MAL_SUCCEED;
/* check if file exists */
@@ -528,16 +529,22 @@ LIDARopenFile(str fname, lidar_info *res
reader = LASReader_Create(fname);
MT_lock_unset(&mt_lidar_lock);
if (LASError_GetErrorCount() != 0) {
- msg = createException(MAL, "lidar.openfile", "Error accessing
LIDAR file %s (%s)",
- fname,
LASError_GetLastErrorMsg());
+ str error_msg = LASError_GetLastErrorMsg();
+ msg = createException(MAL, "lidar.openfile", "Error accessing
LIDAR file %s (%s)???",
+ fname, error_msg);
+ free(error_msg);
goto openfile_cleanup;
}
/* get the header */
+ MT_lock_set(&mt_lidar_lock);
header = LASReader_GetHeader(reader);
+ MT_lock_unset(&mt_lidar_lock);
if (!header) {
+ str error_msg = LASError_GetLastErrorMsg();
msg = createException(MAL, "lidar.openfile", "Error accessing
LIDAR file %s (%s)",
- fname,
LASError_GetLastErrorMsg());
+ fname, error_msg);
+ free(error_msg);
goto openfile_cleanup;
}
@@ -545,7 +552,10 @@ LIDARopenFile(str fname, lidar_info *res
print_lidar_header(stderr, header, fname, 0, 0);
#endif
+ MT_lock_set(&mt_lidar_lock);
schema = LASHeader_GetSchema(header);
+ pSRS = LASHeader_GetSRS(header);
+ MT_lock_unset(&mt_lidar_lock);
/* read values from the header */
res->fileSourceId = LASHeader_GetFileSourceId(header);
res->versionMajor = LASHeader_GetVersionMajor(header);
@@ -562,9 +572,9 @@ LIDARopenFile(str fname, lidar_info *res
res->headerSize = LASHeader_GetHeaderSize(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));
+ res->WKT = LASSRS_GetWKT(pSRS);
+ res->WKT_CompoundOK = LASSRS_GetWKT_CompoundOK(pSRS);
+ res->proj4 = LASSRS_GetProj4(pSRS);
/* read data from the header */
@@ -583,9 +593,10 @@ LIDARopenFile(str fname, lidar_info *res
openfile_cleanup:
MT_lock_set(&mt_lidar_lock);
+ LASSRS_Destroy(pSRS);
+ LASSchema_Destroy(schema);
LASHeader_Destroy(header);
LASReader_Destroy(reader);
- LASSchema_Destroy(schema);
MT_lock_unset(&mt_lidar_lock);
return msg;
@@ -846,8 +857,10 @@ LIDARattach(Client cntxt, MalBlkPtr mb,
files = LIDARopenPath(fname, &files_len);
if (files == NULL) {
+ str error_msg = LASError_GetLastErrorMsg();
msg = createException(MAL, "lidar.attach", "Error accessing
path %s (%s)",
- fname,
LASError_GetLastErrorMsg());
+ fname, error_msg);
+ free(error_msg);
return msg;
}
@@ -1606,19 +1619,24 @@ LIDARloadTable_(mvc *m, sql_schema *sch,
col = mvc_bind_column(m, lidar_fl, "name");
fname = (char *)table_funcs.column_find_value(m->session->tr, col,
frid);
+#ifndef NDEBUG
+ fprintf(stderr, "----------------LIDARloadTable_ called, creating
reader\n");
+#endif
MT_lock_set(&mt_lidar_lock);
LASError_Reset();
reader = LASReader_Create(fname);
MT_lock_unset(&mt_lidar_lock);
if (LASError_GetErrorCount() != 0) {
+ str error_msg = LASError_GetLastErrorMsg();
msg = createException(MAL, "lidar.lidarload",
- "Error accessing
LiDAR file %s (%s)", fname, LASError_GetLastErrorMsg());
+ "Error accessing
LiDAR file %s (%s)", fname, error_msg);
GDKfree(tpcode);
GDKfree(rep);
GDKfree(wid);
free(bats);
free(columns);
free(arr);
+ free(error_msg);
return msg;
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list