pekingduck / metadsf

A command line DSF tagging tool
GNU General Public License v3.0
13 stars 5 forks source link

Failure to delete and replace tags #4

Open remenor opened 5 years ago

remenor commented 5 years ago

I was able to compile in Debian 10 but there are some faults when trying to delete tags:

--remove-everything does not remove tags

$ metadsf --remove-everything 01\ -\ Jeff\ Beck\ -\ Led\ Boots.dsf segment violation --set-tag or -s does not replace the tags but adds another of the same type

metadsf -t 01\ -\ Jeff\ Beck\ -\ Led\ Boots.dsf TIT2=Led Boots TPE1=Jeff Beck TALB=Wired TCON=Pop TDRC=2015-16-08 TDAT= TRCK=1 metadsf -sTIT2=New --id3v2-version=3 01\ -\ Jeff\ Beck\ -\ Led\ Boots.dsf metadsf -t 01\ -\ Jeff\ Beck\ -\ Led\ Boots.dsf TIT2=Led Boots TPE1=Jeff Beck TALB=Wired TCON=Pop TRCK=1 TIT2=New TDRC=2015-16-08 TDAT= Delete and add the tags individually works perfectly

zvezdochiot commented 2 years ago
$ gdb metadsf 
GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git
Copyright (C) 2021 Free Software Foundation, Inc.                                                                                                                                                                                                                                        
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from metadsf...
(gdb) b deleteFrames
Breakpoint 1 at 0xae10: deleteFrames. (3 locations)
(gdb) r --remove-everything test.dsf
Starting program: /media/buf/zvezdochiot/dists/git/ORGS/ORG.SLM/metadsf-all/metadsf-t/src/metadsf --remove-everything test.dsf
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, MetaDSF::MetaDSFImpl::deleteFrames (l=..., this=0x55555558ee50) at metadsf.cpp:459
459       for (it = l.begin(); it != l.end(); it++) {
(gdb) n
460         _file.ID3v2Tag()->removeFrame(*it);
(gdb) n
459       for (it = l.begin(); it != l.end(); it++) {
(gdb) n
460         _file.ID3v2Tag()->removeFrame(*it);
(gdb) n
459       for (it = l.begin(); it != l.end(); it++) {
(gdb) n
460         _file.ID3v2Tag()->removeFrame(*it);
(gdb) n
459       for (it = l.begin(); it != l.end(); it++) {
(gdb) n
460         _file.ID3v2Tag()->removeFrame(*it);
(gdb) n
459       for (it = l.begin(); it != l.end(); it++) {
(gdb) n
460         _file.ID3v2Tag()->removeFrame(*it);
(gdb) n
459       for (it = l.begin(); it != l.end(); it++) {
(gdb) n
460         _file.ID3v2Tag()->removeFrame(*it);
(gdb) n
459       for (it = l.begin(); it != l.end(); it++) {
(gdb) n
460         _file.ID3v2Tag()->removeFrame(*it);
(gdb) n
459       for (it = l.begin(); it != l.end(); it++) {
(gdb) n
460         _file.ID3v2Tag()->removeFrame(*it);
(gdb) n
459       for (it = l.begin(); it != l.end(); it++) {
(gdb) n
MetaDSF::MetaDSFImpl::deleteTags (this=0x55555558ee50, key=...) at metadsf.cpp:487
487       _changed = true;
(gdb) n
404           size_t _M_get_size() const { return _M_impl._M_node._M_size; }
(gdb) n

Program received signal SIGSEGV, Segmentation fault.
0x0000555555572010 in ?? ()
(gdb) q