summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorSakari Bergen <sakari.bergen@beatwaves.net>2008-10-11 09:25:43 +0000
committerSakari Bergen <sakari.bergen@beatwaves.net>2008-10-11 09:25:43 +0000
commit01b1790c98f9ee6739681f1dc8fe529c3ca7160a (patch)
treefec05b6d2d5cd6ea500e5ac3da603adcae1bcab4 /libs
parente17e94e55f481e3aff1e601aff914f7f983af8d0 (diff)
Fix some stupid, stupid, stupid memory leaks in export utilities
git-svn-id: svn://localhost/ardour2/branches/3.0@3913 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/export_utilities.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/libs/ardour/export_utilities.cc b/libs/ardour/export_utilities.cc
index a9223e2e1b..aee5fa21ac 100644
--- a/libs/ardour/export_utilities.cc
+++ b/libs/ardour/export_utilities.cc
@@ -55,6 +55,9 @@ namespace ARDOUR
SampleRateConverter::SampleRateConverter (uint32_t channels, nframes_t in_rate, nframes_t out_rate, int quality) :
channels (channels),
leftover_frames (0),
+ max_leftover_frames (0),
+ frames_in (0),
+ frames_out(0),
data_in (0),
leftover_data (0),
data_out (0),
@@ -102,7 +105,9 @@ SampleRateConverter::process (float * data, nframes_t frames)
nframes_t out_samples_max = (nframes_t) ceil (frames * src_data.src_ratio * channels);
if (data_out_size < out_samples_max) {
- free (data_out);
+ if (data_out) {
+ delete[] data_out;
+ }
data_out = new float[out_samples_max];
src_data.data_out = data_out;
@@ -229,7 +234,7 @@ SampleFormatConverter<TOut>::~SampleFormatConverter ()
gdither_free (dither);
}
if (data_out) {
- delete data_out;
+ delete[] data_out;
}
}
@@ -241,7 +246,9 @@ SampleFormatConverter<TOut>::process (float * data, nframes_t frames)
size_t data_size = channels * frames * sizeof (TOut);
if (data_size > data_out_size) {
- free (data_out);
+ if (data_out) {
+ delete[] data_out;
+ }
data_out = new TOut[data_size];
data_out_size = data_size;
}