| Summary: | crash on "rewrite tags" when album frame is shown in file list | ||
|---|---|---|---|
| Product: | [Applications] kid3 | Reporter: | Reuben <reuben.kagan> |
| Component: | general | Assignee: | Urs Fleisch <ufleisch> |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | ||
| Priority: | NOR | ||
| Version First Reported In: | 3.9.x | ||
| Target Milestone: | --- | ||
| Platform: | Arch Linux | ||
| OS: | Linux | ||
| Latest Commit: | https://invent.kde.org/multimedia/kid3/commit/516744131cbda658c835ca3a9458251738a91dce | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
|
Description
Reuben
2022-01-01 21:30:44 UTC
Git commit 516744131cbda658c835ca3a9458251738a91dce by Urs Fleisch. Committed on 02/01/2022 at 08:58. Pushed by ufleisch into branch 'master'. Fix crash when stale tags are read after being stripped This crash can happen when standard tags are displayed in the file list (enabled via context menu) and their values are updated just after stripping their tag. It is enough to strip the tag using the "Remove" button and then saving. Another way to reproduce it is using the "Rewrite Tags" action from the file list context menu, as described in the bug report. Saving of the stripped tag in TagLibFile::writeTags() called markTagUnchanged() before setting the corresponding tag to null. This call then invoked FileProxyModel::onFileModificationChanged(), emit dataChanged(), further TaggedFileSystemModel::data() to update the file list and then TagLibFile::getFrame() which tried to read from the stale tag causing the crash. Now the state of the tag is updated before the change notification is emitted so that the subsequent reading of the tags works correctly. M +7 -7 src/plugins/taglibmetadata/taglibfile.cpp https://invent.kde.org/multimedia/kid3/commit/516744131cbda658c835ca3a9458251738a91dce Thank you very much for reporting this bug. I have fixed it in version git20220102, which can be found in https://sourceforge.net/projects/kid3/files/kid3/development/. Could you please test if it works for you? Fixed in git version |