From 5ca6e177c07d7a29cc3656e7b2b41346cff28cc6 Mon Sep 17 00:00:00 2001 From: Daniel Zerbino Date: Sat, 26 Dec 2020 14:57:37 +0000 Subject: [PATCH] Closing memory leak in BigWig reader --- TODO.txt | 1 - src/bigBedReader.c | 4 +++- src/bigWiggleReader.c | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/TODO.txt b/TODO.txt index 6422bc4..66c3429 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,4 +1,3 @@ -Hold fire on writers Seekable apply_paste Memory tracking & cleaning of chrom labels for text files Read score in BigBed files? => Handling overlapping iterators with value in unit and filter diff --git a/src/bigBedReader.c b/src/bigBedReader.c index 081aa8e..f3bbf88 100644 --- a/src/bigBedReader.c +++ b/src/bigBedReader.c @@ -49,8 +49,10 @@ static int readBigBedRegion(BigBedReaderData * data, char * chrom, int start, in return 0; while(iter->data) { - if (readIteratorEntries(iter, chrom, data)) + if (readIteratorEntries(iter, chrom, data)) { + bwIteratorDestroy(iter); return 1; + } iter = bwIteratorNext(iter); } bwIteratorDestroy(iter); diff --git a/src/bigWiggleReader.c b/src/bigWiggleReader.c index ea02c64..0efe5a8 100644 --- a/src/bigWiggleReader.c +++ b/src/bigWiggleReader.c @@ -56,8 +56,10 @@ static int readBigWiggleRegion(BigWiggleReaderData * data, char * chrom, int sta return 0; while(iter->data) { - if (readIteratorIntervals(iter, chrom, data)) + if (readIteratorIntervals(iter, chrom, data)) { + bwIteratorDestroy(iter); return 1; + } iter = bwIteratorNext(iter); } bwIteratorDestroy(iter);