Skip to content

Commit 5a89169

Browse files
committed
fix: fix memory leak in TreeSequence::simplify
1 parent 9cc9f53 commit 5a89169

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

src/trees.rs

Lines changed: 8 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,10 @@ 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+
1198+
// The output is an UNINITIALIZED treeseq,
1199+
// else we leak memory.
1200+
let mut ts = Self::new_uninit();
11991201
let mut output_node_map: Vec<NodeId> = vec![];
12001202
if idmap {
12011203
output_node_map.resize(usize::try_from(self.nodes().num_rows())?, NodeId::NULL);

0 commit comments

Comments
 (0)