C: Fixed opened DIR leak
This commit is contained in:
@ -368,11 +368,18 @@ static obiversion_t obi_get_new_version_number(OBIDMS_column_directory_p column_
|
||||
if (version_file_descriptor < 0)
|
||||
{
|
||||
if (errno == ENOENT)
|
||||
{
|
||||
free(version_file_name);
|
||||
free(column_directory_name);
|
||||
closedir(col_directory);
|
||||
return create_version_file(column_directory);
|
||||
}
|
||||
else
|
||||
{
|
||||
obi_set_errno(OBICOL_UNKNOWN_ERROR);
|
||||
obidebug(1, "\nError opening a version file");
|
||||
free(column_directory_name);
|
||||
closedir(col_directory);
|
||||
free(version_file_name);
|
||||
return -1;
|
||||
}
|
||||
@ -380,7 +387,13 @@ static obiversion_t obi_get_new_version_number(OBIDMS_column_directory_p column_
|
||||
|
||||
free(version_file_name);
|
||||
free(column_directory_name);
|
||||
closedir(col_directory);
|
||||
if (closedir(col_directory) < 0)
|
||||
{
|
||||
obi_set_errno(OBICOL_UNKNOWN_ERROR);
|
||||
obidebug(1, "\nError opening a version file");
|
||||
close(version_file_descriptor);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Test if the version file size is ok
|
||||
if (lseek(version_file_descriptor, 0, SEEK_END) < loc_size)
|
||||
@ -1193,7 +1206,13 @@ OBIDMS_column_p obi_create_column(OBIDMS_p dms,
|
||||
|
||||
free(column_file_name);
|
||||
free(column_directory_name);
|
||||
closedir(col_dir);
|
||||
if (closedir(col_dir) < 0)
|
||||
{
|
||||
obi_set_errno(OBICOL_UNKNOWN_ERROR);
|
||||
obidebug(1, "\nError closing a column directory");
|
||||
close(column_file_descriptor);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Truncate the column file to the right size
|
||||
if (ftruncate(column_file_descriptor, file_size) < 0)
|
||||
@ -1453,7 +1472,13 @@ OBIDMS_column_p obi_open_column(OBIDMS_p dms,
|
||||
|
||||
free(column_file_name);
|
||||
free(column_directory_name);
|
||||
closedir(col_dir);
|
||||
if (closedir(col_dir) < 0)
|
||||
{
|
||||
obi_set_errno(OBICOL_UNKNOWN_ERROR);
|
||||
obidebug(1, "\nError closing a column directory");
|
||||
close(column_file_descriptor);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Allocate the memory for the column structure
|
||||
column = (OBIDMS_column_p) malloc(sizeof(OBIDMS_column_t));
|
||||
@ -1807,7 +1832,13 @@ int obi_truncate_column(OBIDMS_column_p column) // TODO is it necessary to unmap
|
||||
|
||||
free(column_file_name);
|
||||
free(column_directory_name);
|
||||
closedir(col_dir);
|
||||
if (closedir(col_dir) < 0)
|
||||
{
|
||||
obi_set_errno(OBICOL_UNKNOWN_ERROR);
|
||||
obidebug(1, "\nError closing a column directory");
|
||||
close(column_file_descriptor);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Unmap the data before truncating the file
|
||||
if (munmap(column->data, (column->header)->data_size) < 0)
|
||||
@ -1932,7 +1963,13 @@ int obi_enlarge_column(OBIDMS_column_p column)
|
||||
|
||||
free(column_file_name);
|
||||
free(column_directory_name);
|
||||
closedir(col_dir);
|
||||
if (closedir(col_dir) < 0)
|
||||
{
|
||||
obi_set_errno(OBICOL_UNKNOWN_ERROR);
|
||||
obidebug(1, "\nError closing a column directory");
|
||||
close(column_file_descriptor);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Calculate the new file size
|
||||
old_line_count = (column->header)->line_count;
|
||||
@ -2227,7 +2264,13 @@ OBIDMS_column_header_p obi_column_get_header_from_name(OBIDMS_p dms, const char*
|
||||
|
||||
free(column_file_name);
|
||||
free(column_directory_name);
|
||||
closedir(col_dir);
|
||||
if (closedir(col_dir) < 0)
|
||||
{
|
||||
obi_set_errno(OBICOL_UNKNOWN_ERROR);
|
||||
obidebug(1, "\nError closing a column directory");
|
||||
close(column_file_descriptor);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Read the header size
|
||||
if (read(column_file_descriptor, &header_size, sizeof(size_t)) < ((ssize_t) sizeof(size_t)))
|
||||
|
Reference in New Issue
Block a user