From 4828a3b925299e35d099d8d4b22705528745ce15 Mon Sep 17 00:00:00 2001 From: Urs Fleisch Date: Sun, 3 Jan 2021 18:54:53 +0100 Subject: [PATCH] Do not crash when removing non existing TableOfContentsFrame child --- taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp b/taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp index 937cb4d2..36016c71 100644 --- a/taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp +++ b/taglib/mpeg/id3v2/frames/tableofcontentsframe.cpp @@ -168,7 +168,8 @@ void TableOfContentsFrame::removeChildElement(const ByteVector &cE) if(it == d->childElements.end()) it = d->childElements.find(cE + ByteVector("\0")); - d->childElements.erase(it); + if(it != d->childElements.end()) + d->childElements.erase(it); } const FrameListMap &TableOfContentsFrame::embeddedFrameListMap() const @@ -196,11 +197,14 @@ void TableOfContentsFrame::removeEmbeddedFrame(Frame *frame, bool del) { // remove the frame from the frame list FrameList::Iterator it = d->embeddedFrameList.find(frame); - d->embeddedFrameList.erase(it); + if(it != d->embeddedFrameList.end()) + d->embeddedFrameList.erase(it); // ...and from the frame list map - it = d->embeddedFrameListMap[frame->frameID()].find(frame); - d->embeddedFrameListMap[frame->frameID()].erase(it); + FrameList &mappedList = d->embeddedFrameListMap[frame->frameID()]; + it = mappedList.find(frame); + if(it != mappedList.end()) + mappedList.erase(it); // ...and delete as desired if(del)