C: Fixed opened DIR leak
This commit is contained in:
@ -23,6 +23,7 @@ from obitools3.dms.capi.obiview cimport NUC_SEQUENCE_COLUMN, \
|
|||||||
import shutil
|
import shutil
|
||||||
import string
|
import string
|
||||||
import random
|
import random
|
||||||
|
#import subprocess
|
||||||
|
|
||||||
|
|
||||||
VIEW_TYPES = [b"", b"NUC_SEQS_VIEW"]
|
VIEW_TYPES = [b"", b"NUC_SEQS_VIEW"]
|
||||||
@ -516,6 +517,10 @@ def run(config):
|
|||||||
i+=1
|
i+=1
|
||||||
if (i%(config['test']['nbtests']/10)) == 0 :
|
if (i%(config['test']['nbtests']/10)) == 0 :
|
||||||
print("Testing......"+str(i*100/config['test']['nbtests'])+"%")
|
print("Testing......"+str(i*100/config['test']['nbtests'])+"%")
|
||||||
|
#lsof = subprocess.Popen("lsof | grep '/private/tmp/test_dms.obidms/'", stdin=subprocess.PIPE, shell=True )
|
||||||
|
#lsof.communicate( b"LSOF\n" )
|
||||||
|
#lsof = subprocess.Popen("lsof | wc -l", stdin=subprocess.PIPE, shell=True )
|
||||||
|
#lsof.communicate( b"LSOF total\n" )
|
||||||
|
|
||||||
#print(infos)
|
#print(infos)
|
||||||
|
|
||||||
|
@ -368,11 +368,18 @@ static obiversion_t obi_get_new_version_number(OBIDMS_column_directory_p column_
|
|||||||
if (version_file_descriptor < 0)
|
if (version_file_descriptor < 0)
|
||||||
{
|
{
|
||||||
if (errno == ENOENT)
|
if (errno == ENOENT)
|
||||||
|
{
|
||||||
|
free(version_file_name);
|
||||||
|
free(column_directory_name);
|
||||||
|
closedir(col_directory);
|
||||||
return create_version_file(column_directory);
|
return create_version_file(column_directory);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
obi_set_errno(OBICOL_UNKNOWN_ERROR);
|
obi_set_errno(OBICOL_UNKNOWN_ERROR);
|
||||||
obidebug(1, "\nError opening a version file");
|
obidebug(1, "\nError opening a version file");
|
||||||
|
free(column_directory_name);
|
||||||
|
closedir(col_directory);
|
||||||
free(version_file_name);
|
free(version_file_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -380,7 +387,13 @@ static obiversion_t obi_get_new_version_number(OBIDMS_column_directory_p column_
|
|||||||
|
|
||||||
free(version_file_name);
|
free(version_file_name);
|
||||||
free(column_directory_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
|
// Test if the version file size is ok
|
||||||
if (lseek(version_file_descriptor, 0, SEEK_END) < loc_size)
|
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_file_name);
|
||||||
free(column_directory_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
|
// Truncate the column file to the right size
|
||||||
if (ftruncate(column_file_descriptor, file_size) < 0)
|
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_file_name);
|
||||||
free(column_directory_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
|
// Allocate the memory for the column structure
|
||||||
column = (OBIDMS_column_p) malloc(sizeof(OBIDMS_column_t));
|
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_file_name);
|
||||||
free(column_directory_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
|
// Unmap the data before truncating the file
|
||||||
if (munmap(column->data, (column->header)->data_size) < 0)
|
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_file_name);
|
||||||
free(column_directory_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
|
// Calculate the new file size
|
||||||
old_line_count = (column->header)->line_count;
|
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_file_name);
|
||||||
free(column_directory_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
|
// Read the header size
|
||||||
if (read(column_file_descriptor, &header_size, sizeof(size_t)) < ((ssize_t) sizeof(size_t)))
|
if (read(column_file_descriptor, &header_size, sizeof(size_t)) < ((ssize_t) sizeof(size_t)))
|
||||||
|
Reference in New Issue
Block a user