fixed the computation of the data size when cloning a column
This commit is contained in:
@ -908,7 +908,7 @@ OBIDMS_column_p obi_open_column(OBIDMS_p dms, const char* column_name, obiversio
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check endianness?
|
// TODO Check endianness?
|
||||||
|
|
||||||
// Compute data size from the informations in the header
|
// Compute data size from the informations in the header
|
||||||
data_size = ((column->header)->line_count) * sizeof((column->header)->data_type);
|
data_size = ((column->header)->line_count) * sizeof((column->header)->data_type);
|
||||||
@ -947,6 +947,7 @@ OBIDMS_column_p obi_clone_column(OBIDMS_p dms, const char* column_name, obiversi
|
|||||||
OBIDMS_column_p new_column;
|
OBIDMS_column_p new_column;
|
||||||
size_t nb_lines;
|
size_t nb_lines;
|
||||||
size_t nb_elements_per_line;
|
size_t nb_elements_per_line;
|
||||||
|
size_t data_size;
|
||||||
OBIType_t data_type;
|
OBIType_t data_type;
|
||||||
|
|
||||||
column_to_clone = obi_open_column(dms, column_name, version_number);
|
column_to_clone = obi_open_column(dms, column_name, version_number);
|
||||||
@ -984,12 +985,13 @@ OBIDMS_column_p obi_clone_column(OBIDMS_p dms, const char* column_name, obiversi
|
|||||||
}
|
}
|
||||||
|
|
||||||
(new_column->header)->cloned_from = version_number;
|
(new_column->header)->cloned_from = version_number;
|
||||||
// TODO copy header->comments?
|
//memcpy((new_column->header)->comments, (column_to_clone->header)->comments, obi_get_platform_header_size() - //??(column_to_clone->header)->comments); // TODO
|
||||||
|
|
||||||
if (clone_data)
|
if (clone_data)
|
||||||
{
|
{
|
||||||
memcpy(new_column->data, column_to_clone->data, nb_lines*nb_elements_per_line*sizeof(data_type));
|
data_size = obi_array_sizeof(data_type, nb_lines, nb_elements_per_line);
|
||||||
(new_column->header)->lines_used = nb_lines;
|
memcpy(new_column->data, column_to_clone->data, data_size);
|
||||||
|
(new_column->header)->lines_used = (column_to_clone->header)->lines_used;
|
||||||
}
|
}
|
||||||
|
|
||||||
// close column_to_clone
|
// close column_to_clone
|
||||||
|
Reference in New Issue
Block a user