summaryrefslogtreecommitdiff
path: root/muse2/muse/wave.cpp
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2011-12-14 15:08:02 +0000
committerFlorian Jung <flo@windfisch.org>2011-12-14 15:08:02 +0000
commitc36a5508aa42e596b005425208054af9a60734b4 (patch)
treefde0504e0c25b8f39ed6f5f7f7332943e4a95c7f /muse2/muse/wave.cpp
parent42126f3b398802eb24c8d9acd2591ef4dbe7257d (diff)
pulled fixes from release into trunk
Diffstat (limited to 'muse2/muse/wave.cpp')
-rw-r--r--muse2/muse/wave.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/muse2/muse/wave.cpp b/muse2/muse/wave.cpp
index 06759441..f22f6f97 100644
--- a/muse2/muse/wave.cpp
+++ b/muse2/muse/wave.cpp
@@ -105,7 +105,7 @@ SndFile::~SndFile()
bool SndFile::openRead()
{
if (openFlag) {
- printf("SndFile:: alread open\n");
+ printf("SndFile:: already open\n");
return false;
}
QString p = path();
@@ -468,7 +468,7 @@ size_t SndFile::readWithHeap(int srcChannels, float** dst, size_t n, bool overwr
{
float *buffer = new float[n * sfinfo.channels];
int rn = readInternal(srcChannels,dst,n,overwrite, buffer);
- delete buffer;
+ delete[] buffer;
return rn;
}
@@ -588,11 +588,11 @@ size_t SndFile::write(int srcChannels, float** src, size_t n)
else {
printf("SndFile:write channel mismatch %d -> %d\n",
srcChannels, dstChannels);
- delete buffer;
+ delete[] buffer;
return 0;
}
int nbr = sf_writef_float(sf, buffer, n) ;
- delete buffer;
+ delete[] buffer;
return nbr;
}
@@ -1120,6 +1120,22 @@ SndFileR::~SndFileR()
}
}
+void SndFileList::clearDelete()
+{
+ // ~SndFile searches itself on the list (and will find for
+ // sure) and deletes the entry on its own.
+ while (!empty())
+ delete *begin();
+
+ /* this is wrong, because ~SndFile deletes itself from the
+ * list, causing the iterator to be invalidated -> fail.
+ for (SndFileList::iterator i = begin(); i != end(); ++i)
+ delete *i;
+ clear();
+ */
+}
+
+
} // namespace MusECore
namespace MusEGui {