Id3lib SEGFAULT – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Id3lib SEGFAULT – C / C++ – Fórum – Programujte.comId3lib SEGFAULT – C / C++ – Fórum – Programujte.com

 

Earl Cash0
Věrný člen
24. 1. 2010   #1
-
0
-

Zdravim, pisu program za pouziti knihovny id3lib, ale narazil jsem na nejaky problem s pameti, ktery skonci SEGFAULTem... Prohnal jsem to valgrindem, ale ani to mne prilis nenasmerovalo spravnym smerem...

valgrind output:

==14716== Invalid read of size 4

==14716== at 0x404BEFC: ID3_Frame::GetField(ID3_FieldID) const (in /usr/lib/libid3-3.8.so.3.0.0)
==14716== by 0x8049BD0: Parse_mask(char const*, char const*, ID3_TagType) (in /home/earlcash/dev/id3fcp/id3fcp)
==14716== by 0x804967D: main (in /home/earlcash/dev/id3fcp/id3fcp)
==14716== Address 0x4 is not stack'd, malloc'd or (recently) free'd
==14716==
==14716== Process terminating with default action of signal 11 (SIGSEGV)
==14716== Access not within mapped region at address 0x4
==14716== at 0x404BEFC: ID3_Frame::GetField(ID3_FieldID) const (in /usr/lib/libid3-3.8.so.3.0.0)
==14716== by 0x8049BD0: Parse_mask(char const*, char const*, ID3_TagType) (in /home/earlcash/dev/id3fcp/id3fcp)
==14716== by 0x804967D: main (in /home/earlcash/dev/id3fcp/id3fcp)
==14716==
==14716== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 21 from 1)
==14716== malloc/free: in use at exit: 775 bytes in 6 blocks.
==14716== malloc/free: 16 allocs, 10 frees, 9,487 bytes allocated.
==14716== For counts of detected errors, rerun with: -v
==14716== searching for pointers to 6 not-freed blocks.
==14716== checked 130,888 bytes.


problemova cast funkce 'Parse_mask':
	while(event[iter].symbol != NULL){


if((match = s_mask.find(event[iter].symbol)) != string::npos){
file.Find(event[iter].frame_id)->GetField(ID3FN_TEXT)->Get(tag_buff, 255);
s_mask.replace(match, strlen(event[iter].symbol), tag_buff);
iter++;
continue;
}
iter++;
}

Nahlásit jako SPAM
IP: 193.85.177.–
Oh my goodness, shut me down! Machines making machines. How perverse. (C-3PO)
liborb
~ Redaktor
+18
Guru
25. 1. 2010   #2
-
0
-

A nemůže file.Find(event[iter].frame_id) vracet NULL?

Nahlásit jako SPAM
IP: 85.207.166.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 69 hostů

Podobná vlákna

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý