mirror of
https://github.com/cookiengineer/audacity
synced 2025-10-11 09:03:36 +02:00
Remove naked malloc (or similar) and free in: import
This commit is contained in:
@@ -356,9 +356,8 @@ void MP3ImportFileHandle::ImportID3(Tags *tags)
|
||||
else if (frame->nfields == 3) {
|
||||
ustr = id3_field_getstring(&frame->fields[1]);
|
||||
if (ustr) {
|
||||
char *str = (char *)id3_ucs4_utf8duplicate(ustr);
|
||||
n = UTF8CTOWX(str);
|
||||
free(str);
|
||||
MallocString<> str{ (char *)id3_ucs4_utf8duplicate(ustr) };
|
||||
n = UTF8CTOWX(str.get());
|
||||
}
|
||||
|
||||
ustr = id3_field_getstring(&frame->fields[2]);
|
||||
@@ -368,9 +367,8 @@ void MP3ImportFileHandle::ImportID3(Tags *tags)
|
||||
}
|
||||
|
||||
if (ustr) {
|
||||
char *str = (char *)id3_ucs4_utf8duplicate(ustr);
|
||||
v = UTF8CTOWX(str);
|
||||
free(str);
|
||||
MallocString<> str{ (char *)id3_ucs4_utf8duplicate(ustr) };
|
||||
v = UTF8CTOWX(str.get());
|
||||
}
|
||||
|
||||
if (!n.IsEmpty() && !v.IsEmpty()) {
|
||||
|
@@ -324,6 +324,11 @@ How do you want to import the current file(s)?"), oldCopyPref == wxT("copy") ? _
|
||||
return oldCopyPref;
|
||||
}
|
||||
|
||||
struct id3_tag_deleter {
|
||||
void operator () (id3_tag *p) const { if (p) id3_tag_delete(p); }
|
||||
};
|
||||
using id3_tag_holder = std::unique_ptr<id3_tag, id3_tag_deleter>;
|
||||
|
||||
ProgressResult PCMImportFileHandle::Import(TrackFactory *trackFactory,
|
||||
TrackHolders &outTracks,
|
||||
Tags *tags)
|
||||
@@ -584,14 +589,17 @@ ProgressResult PCMImportFileHandle::Import(TrackFactory *trackFactory,
|
||||
continue;
|
||||
}
|
||||
|
||||
id3_byte_t *buffer = (id3_byte_t *)malloc(len);
|
||||
if (!buffer) {
|
||||
break;
|
||||
}
|
||||
|
||||
f.Read(buffer, len);
|
||||
struct id3_tag *tp = id3_tag_parse(buffer, len);
|
||||
free(buffer);
|
||||
id3_tag_holder tp;
|
||||
{
|
||||
ArrayOf<id3_byte_t> buffer{ len };
|
||||
if (!buffer) {
|
||||
break;
|
||||
}
|
||||
|
||||
f.Read(buffer.get(), len);
|
||||
tp.reset( id3_tag_parse(buffer.get(), len) );
|
||||
}
|
||||
|
||||
if (!tp) {
|
||||
break;
|
||||
@@ -662,9 +670,8 @@ ProgressResult PCMImportFileHandle::Import(TrackFactory *trackFactory,
|
||||
else if (frame->nfields == 3) {
|
||||
ustr = id3_field_getstring(&frame->fields[1]);
|
||||
if (ustr) {
|
||||
char *str = (char *)id3_ucs4_utf8duplicate(ustr);
|
||||
n = UTF8CTOWX(str);
|
||||
free(str);
|
||||
MallocString<> str{ (char *)id3_ucs4_utf8duplicate(ustr) };
|
||||
n = UTF8CTOWX(str.get());
|
||||
}
|
||||
|
||||
ustr = id3_field_getstring(&frame->fields[2]);
|
||||
@@ -674,9 +681,8 @@ ProgressResult PCMImportFileHandle::Import(TrackFactory *trackFactory,
|
||||
}
|
||||
|
||||
if (ustr) {
|
||||
char *str = (char *)id3_ucs4_utf8duplicate(ustr);
|
||||
v = UTF8CTOWX(str);
|
||||
free(str);
|
||||
MallocString<> str{ (char *)id3_ucs4_utf8duplicate(ustr) };
|
||||
v = UTF8CTOWX(str.get());
|
||||
}
|
||||
|
||||
if (!n.IsEmpty() && !v.IsEmpty()) {
|
||||
@@ -692,7 +698,6 @@ ProgressResult PCMImportFileHandle::Import(TrackFactory *trackFactory,
|
||||
}
|
||||
}
|
||||
|
||||
id3_tag_delete(tp);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -319,18 +319,22 @@ ProgressResult QTImportFileHandle::Import(TrackFactory *trackFactory,
|
||||
format = floatSample;
|
||||
break;
|
||||
}
|
||||
|
||||
AudioBufferList *abl = (AudioBufferList *)
|
||||
calloc(1, offsetof(AudioBufferList, mBuffers) + (sizeof(AudioBuffer) * numchan));
|
||||
|
||||
std::unique_ptr<AudioBufferList, freer> abl
|
||||
{ static_cast<AudioBufferList *>
|
||||
(calloc(1, offsetof(AudioBufferList, mBuffers) +
|
||||
(sizeof(AudioBuffer) * numchan))) };
|
||||
abl->mNumberBuffers = numchan;
|
||||
|
||||
TrackHolders channels{ numchan };
|
||||
|
||||
|
||||
ArraysOf<unsigned char> holders{ numchan, sizeof(float) * bufsize };
|
||||
int c;
|
||||
for (c = 0; c < numchan; c++) {
|
||||
abl->mBuffers[c].mNumberChannels = 1;
|
||||
abl->mBuffers[c].mDataByteSize = sizeof(float) * bufsize;
|
||||
abl->mBuffers[c].mData = malloc(abl->mBuffers[c].mDataByteSize);
|
||||
|
||||
abl->mBuffers[c].mData = holders[c].get();
|
||||
|
||||
channels[c] = trackFactory->NewWaveTrack(format);
|
||||
channels[c]->SetRate(desc.mSampleRate);
|
||||
@@ -352,7 +356,7 @@ ProgressResult QTImportFileHandle::Import(TrackFactory *trackFactory,
|
||||
|
||||
err = MovieAudioExtractionFillBuffer(maer,
|
||||
&numFrames,
|
||||
abl,
|
||||
abl.get(),
|
||||
&flags);
|
||||
if (err != noErr) {
|
||||
wxMessageBox(_("Unable to get fill buffer"));
|
||||
@@ -383,12 +387,7 @@ ProgressResult QTImportFileHandle::Import(TrackFactory *trackFactory,
|
||||
|
||||
outTracks.swap(channels);
|
||||
}
|
||||
|
||||
for (c = 0; c < numchan; c++) {
|
||||
free(abl->mBuffers[c].mData);
|
||||
}
|
||||
free(abl);
|
||||
|
||||
|
||||
//
|
||||
// Extract any metadata
|
||||
//
|
||||
@@ -463,7 +462,6 @@ void QTImportFileHandle::AddMetadata(Tags *tags)
|
||||
continue;
|
||||
}
|
||||
|
||||
QTPropertyValuePtr outValPtr = nil;
|
||||
QTPropertyValueType outPropType;
|
||||
::ByteCount outPropValueSize;
|
||||
::ByteCount outPropValueSizeUsed = 0;
|
||||
@@ -495,7 +493,7 @@ void QTImportFileHandle::AddMetadata(Tags *tags)
|
||||
}
|
||||
|
||||
// Alloc memory for it
|
||||
outValPtr = malloc(outPropValueSize);
|
||||
ArrayOf<char> outVals{ outPropValueSize };
|
||||
|
||||
// Retrieve the data
|
||||
err = QTMetaDataGetItemProperty(metaDataRef,
|
||||
@@ -503,24 +501,22 @@ void QTImportFileHandle::AddMetadata(Tags *tags)
|
||||
kPropertyClass_MetaDataItem,
|
||||
kQTMetaDataItemPropertyID_Value,
|
||||
outPropValueSize,
|
||||
outValPtr,
|
||||
outVals.get(),
|
||||
&outPropValueSizeUsed);
|
||||
if (err != noErr) {
|
||||
free(outValPtr);
|
||||
if (err != noErr)
|
||||
continue;
|
||||
}
|
||||
|
||||
wxString v = wxT("");
|
||||
|
||||
switch (dataType)
|
||||
{
|
||||
case kQTMetaDataTypeUTF8:
|
||||
v = wxString((char *)outValPtr, wxConvUTF8);
|
||||
v = wxString(outVals.get(), wxConvUTF8);
|
||||
break;
|
||||
case kQTMetaDataTypeUTF16BE:
|
||||
{
|
||||
wxMBConvUTF16BE conv;
|
||||
v = wxString((char *)outValPtr, conv);
|
||||
v = wxString(outVals.get(), conv);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -528,8 +524,6 @@ void QTImportFileHandle::AddMetadata(Tags *tags)
|
||||
if (!v.IsEmpty()) {
|
||||
tags->SetTag(names[i].name, v);
|
||||
}
|
||||
|
||||
free(outValPtr);
|
||||
}
|
||||
|
||||
// we are done so release our metadata object
|
||||
|
Reference in New Issue
Block a user