Added the lists of opened columns and arrays in the OBIDMS structure,
and a counter in the OBIDMS column structure; fixed some bugs and created tests for referring columns that are bound to disappear anyway.
This commit is contained in:
15
src/obidms.c
15
src/obidms.c
@ -413,6 +413,16 @@ OBIDMS_p obi_open_dms(const char* dms_name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Initialize the list of opened columns
|
||||
dms->opened_columns = (Opened_columns_list_p) malloc(sizeof(Opened_columns_list_t));
|
||||
(dms->opened_columns)->columns = (OBIDMS_column_p*) malloc(MAX_NB_OPENED_COLUMNS*sizeof(OBIDMS_column_p));
|
||||
(dms->opened_columns)->nb_opened_columns = 0;
|
||||
|
||||
// Initialize the list of opened arrays
|
||||
dms->opened_arrays = (Opened_arrays_list_p) malloc(sizeof(Opened_arrays_list_t));
|
||||
(dms->opened_arrays)->arrays = (OBIDMS_array_p*) malloc(MAX_NB_OPENED_ARRAYS*sizeof(OBIDMS_array_p));
|
||||
(dms->opened_arrays)->nb_opened_arrays = 0;
|
||||
|
||||
return dms;
|
||||
}
|
||||
|
||||
@ -440,6 +450,11 @@ int obi_close_dms(OBIDMS_p dms)
|
||||
{
|
||||
if (dms != NULL)
|
||||
{
|
||||
// Close all columns
|
||||
while ((dms->opened_columns)->nb_opened_columns > 0)
|
||||
obi_close_column(*((dms->opened_columns)->columns));
|
||||
|
||||
// Close dms and array directories
|
||||
if (closedir(dms->directory) < 0)
|
||||
{
|
||||
obi_set_errno(OBIDMS_MEMORY_ERROR);
|
||||
|
Reference in New Issue
Block a user