diff --git a/src/obidmscolumn.c b/src/obidmscolumn.c index 76939da..d55338b 100644 --- a/src/obidmscolumn.c +++ b/src/obidmscolumn.c @@ -907,8 +907,9 @@ OBIDMS_column_p obi_open_column(OBIDMS_p dms, // TODO Check endianness? // Compute data size from the informations in the header - data_size = ((column->header)->line_count) * sizeof((column->header)->data_type); + data_size = obi_array_sizeof((column->header)->data_type, (column->header)->line_count, (column->header)->nb_elements_per_line); + // Map the data column->data = mmap(NULL, data_size, PROT_READ, @@ -1009,7 +1010,7 @@ int obi_close_column(OBIDMS_column_p column) size_t data_size; // Munmap data - data_size = (column->header)->line_count * (column->header)->nb_elements_per_line * sizeof((column->header)->data_type); + data_size = obi_array_sizeof((column->header)->data_type, (column->header)->line_count, (column->header)->nb_elements_per_line); if (munmap(column->data, data_size) < 0) { obi_set_errno(OBICOL_UNKNOWN_ERROR); @@ -1025,6 +1026,8 @@ int obi_close_column(OBIDMS_column_p column) return -1; } + obi_close_column_directory(column->column_directory); + free(column); return 0;