Skip to content

Commit 7ebed2b

Browse files
authored
fix: fix memory leak in TreeSequence::simplify (#274)
1 parent 9cc9f53 commit 7ebed2b

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/trees.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1020,6 +1020,10 @@ impl TreeSequence {
10201020
handle_tsk_return_value!(rv, treeseq)
10211021
}
10221022

1023+
fn new_uninit() -> Self {
1024+
Self::wrap()
1025+
}
1026+
10231027
/// Dump the tree sequence to file.
10241028
///
10251029
/// # Note
@@ -1190,12 +1194,9 @@ impl TreeSequence {
11901194
options: O,
11911195
idmap: bool,
11921196
) -> Result<(Self, Option<Vec<NodeId>>), TskitError> {
1193-
let mut tables = TableCollection::new(unsafe { (*(*self.inner).tables).sequence_length })?;
1194-
match tables.build_index() {
1195-
Ok(_) => (),
1196-
Err(e) => return Err(e),
1197-
}
1198-
let mut ts = tables.tree_sequence(TreeSequenceFlags::default())?;
1197+
// The output is an UNINITIALIZED treeseq,
1198+
// else we leak memory.
1199+
let mut ts = Self::new_uninit();
11991200
let mut output_node_map: Vec<NodeId> = vec![];
12001201
if idmap {
12011202
output_node_map.resize(usize::try_from(self.nodes().num_rows())?, NodeId::NULL);

0 commit comments

Comments
 (0)