summaryrefslogtreecommitdiff
path: root/src/lib/tng_io.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/tng_io.c')
-rw-r--r--src/lib/tng_io.c65
1 files changed, 40 insertions, 25 deletions
diff --git a/src/lib/tng_io.c b/src/lib/tng_io.c
index abb0592..658e474 100644
--- a/src/lib/tng_io.c
+++ b/src/lib/tng_io.c
@@ -8171,7 +8171,7 @@ tng_function_status DECLSPECDLLEXPORT tng_residue_atom_of_index_get
{
tng_chain_t chain;
tng_molecule_t molecule;
-
+
(void) tng_data;
TNG_ASSERT(residue, "TNG library: residue must not be a NULL pointer.");
TNG_ASSERT(atom, "TNG library: atom must not be a NULL pointer.");
@@ -8183,13 +8183,13 @@ tng_function_status DECLSPECDLLEXPORT tng_residue_atom_of_index_get
}
chain = residue->chain;
molecule = chain->molecule;
-
+
if(index + residue->atoms_offset >= molecule->n_atoms)
{
*atom = 0;
return(TNG_FAILURE);
}
-
+
*atom = &molecule->atoms[residue->atoms_offset + index];
return(TNG_SUCCESS);
}
@@ -17777,10 +17777,12 @@ tng_function_status DECLSPECDLLEXPORT tng_util_next_frame_present_data_blocks_fi
TNG_ASSERT(tng_data, "TNG library: Trajectory container not properly setup.");
TNG_ASSERT(next_frame, "TNG library: The pointer to the next frame must not be NULL.");
- TNG_ASSERT(data_block_ids_in_next_frame, "TNG library: The pointer to the list of data block IDs must not be NULL.");
+ TNG_ASSERT(data_block_ids_in_next_frame == 0, "TNG library: The pointer to the list of data block IDs must be NULL.");
+
if(n_requested_data_block_ids)
{
TNG_ASSERT(requested_data_block_ids, "TNG library: If the number of requested data blocks is > 0 then the array of data block IDs must not be NULL.");
+ *data_block_ids_in_next_frame = malloc(sizeof(int64_t) * n_requested_data_block_ids);
}
frame_set = &tng_data->current_trajectory_frame_set;
@@ -17854,18 +17856,25 @@ tng_function_status DECLSPECDLLEXPORT tng_util_next_frame_present_data_blocks_fi
{
*n_data_blocks_in_next_frame += 1;
}
- temp = realloc(*data_block_ids_in_next_frame, sizeof(int64_t) *
- (*n_data_blocks_in_next_frame));
- if(!temp)
+ if(n_requested_data_block_ids > 0)
{
- printf("TNG library: Cannot allocate memory (%"PRId64" bytes). %s: %d\n",
- sizeof(int64_t) * (*n_data_blocks_in_next_frame),
- __FILE__, __LINE__);
- free(*data_block_ids_in_next_frame);
- *data_block_ids_in_next_frame = 0;
- return(TNG_CRITICAL);
+ temp = realloc(*data_block_ids_in_next_frame, sizeof(int64_t) *
+ (*n_data_blocks_in_next_frame));
+ if(!temp)
+ {
+ printf("TNG library: Cannot allocate memory (%"PRId64" bytes). %s: %d\n",
+ sizeof(int64_t) * (*n_data_blocks_in_next_frame),
+ __FILE__, __LINE__);
+ free(*data_block_ids_in_next_frame);
+ *data_block_ids_in_next_frame = 0;
+ return(TNG_CRITICAL);
+ }
+ *data_block_ids_in_next_frame = temp;
+ }
+ else
+ {
+ TNG_ASSERT(*n_data_blocks_in_next_frame <= n_requested_data_block_ids, "TNG library: Array of data block IDs out of bounds");
}
- *data_block_ids_in_next_frame = temp;
*data_block_ids_in_next_frame[*n_data_blocks_in_next_frame-1] = block_id;
@@ -17925,19 +17934,25 @@ tng_function_status DECLSPECDLLEXPORT tng_util_next_frame_present_data_blocks_fi
{
*n_data_blocks_in_next_frame += 1;
}
- temp = realloc(*data_block_ids_in_next_frame, sizeof(int64_t) *
- (*n_data_blocks_in_next_frame));
- if(!temp)
+ if(n_requested_data_block_ids > 0)
{
- printf("TNG library: Cannot allocate memory (%"PRId64" bytes). %s: %d\n",
- sizeof(int64_t) * (*n_data_blocks_in_next_frame),
- __FILE__, __LINE__);
- free(*data_block_ids_in_next_frame);
- *data_block_ids_in_next_frame = 0;
- return(TNG_CRITICAL);
+ temp = realloc(*data_block_ids_in_next_frame, sizeof(int64_t) *
+ (*n_data_blocks_in_next_frame));
+ if(!temp)
+ {
+ printf("TNG library: Cannot allocate memory (%"PRId64" bytes). %s: %d\n",
+ sizeof(int64_t) * (*n_data_blocks_in_next_frame),
+ __FILE__, __LINE__);
+ free(*data_block_ids_in_next_frame);
+ *data_block_ids_in_next_frame = 0;
+ return(TNG_CRITICAL);
+ }
+ *data_block_ids_in_next_frame = temp;
+ }
+ else
+ {
+ TNG_ASSERT(*n_data_blocks_in_next_frame <= n_requested_data_block_ids, "TNG library: Array of data block IDs out of bounds");
}
- *data_block_ids_in_next_frame = temp;
-
*data_block_ids_in_next_frame[*n_data_blocks_in_next_frame-1] = block_id;
min_diff = frame_diff;
contact: Jan Huwald // Impressum