Ik ben bezig met een programma wat MP3 moet checken. Nu wordt de data van een MP3 in een struct gezet en bewaard gedurende het programma.
Nu is het zo dat als ik met de debugger (VC++) op regel 12 sta, regel 11 niet uitgevoerd lijkt te zijn! fe->FileInfo blijft NULL, terwijl fInfo duidelijk een geldige waarde heeft. Als ik nu met de debugger regel 11 in de "QuickWatch" zet en op Recalculate druk, komt wel de goede waarde in fe->FileInfo te staan en werkt de rest van het programma naar behoren.
Ik denk dat dit een stack/buffer/heap overflow of iets dergelijks fouts is, maar ik weet niet waar ik het zoeken moet. Iemand een idee?
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| BOOL ListView_ScanMP3(int iIndex) { file_info * fInfo; ... MpckFileEnt * fe=(MpckFileEnt *)VectorGet(curVector, iIndex); ... fInfo=(file_info *)HeapAlloc(GetProcessHeap(), 0, sizeof(file_info)); if (fInfo==NULL) FatalAppExit(0, "Out Of Memory"); FillMemory(fInfo, sizeof(file_info), 0); ... [doe iets met fInfo] ... (fe->FileInfo)=fInfo; iRes=UpdateItem((MpckDirEnt *)fe, iIndex); return TRUE; } |
Nu is het zo dat als ik met de debugger (VC++) op regel 12 sta, regel 11 niet uitgevoerd lijkt te zijn! fe->FileInfo blijft NULL, terwijl fInfo duidelijk een geldige waarde heeft. Als ik nu met de debugger regel 11 in de "QuickWatch" zet en op Recalculate druk, komt wel de goede waarde in fe->FileInfo te staan en werkt de rest van het programma naar behoren.
Ik denk dat dit een stack/buffer/heap overflow of iets dergelijks fouts is, maar ik weet niet waar ik het zoeken moet. Iemand een idee?