load_mdl.cpp | load_mdl.cpp | |||
---|---|---|---|---|
skipping to change at line 178 | skipping to change at line 178 | |||
if (row >= nRows) break; | if (row >= nRows) break; | |||
} | } | |||
} | } | |||
} | } | |||
BOOL CSoundFile::ReadMDL(const BYTE *lpStream, DWORD dwMemLength) | BOOL CSoundFile::ReadMDL(const BYTE *lpStream, DWORD dwMemLength) | |||
//--------------------------------------------------------------- | //--------------------------------------------------------------- | |||
{ | { | |||
DWORD dwMemPos, dwPos, blocklen, dwTrackPos; | DWORD dwMemPos, dwPos, blocklen, dwTrackPos; | |||
const MDLSONGHEADER *pmsh = (const MDLSONGHEADER *)lpStream; | const MDLSONGHEADER *pmsh = (const MDLSONGHEADER *)lpStream; | |||
MDLINFOBLOCK *pmib; | const MDLINFOBLOCK *pmib; | |||
MDLPATTERNDATA *pmpd; | const MDLPATTERNDATA *pmpd; | |||
UINT i,j, norders = 0, npatterns = 0, ntracks = 0; | UINT i,j, norders = 0, npatterns = 0, ntracks = 0; | |||
UINT ninstruments = 0, nsamples = 0; | UINT ninstruments = 0, nsamples = 0; | |||
WORD block; | WORD block; | |||
WORD patterntracks[MAX_PATTERNS*32]; | WORD patterntracks[MAX_PATTERNS*32]; | |||
BYTE smpinfo[MAX_SAMPLES]; | BYTE smpinfo[MAX_SAMPLES]; | |||
BYTE insvolenv[MAX_INSTRUMENTS]; | BYTE insvolenv[MAX_INSTRUMENTS]; | |||
BYTE inspanenv[MAX_INSTRUMENTS]; | BYTE inspanenv[MAX_INSTRUMENTS]; | |||
LPCBYTE pvolenv, ppanenv, ppitchenv; | LPCBYTE pvolenv, ppanenv, ppitchenv; | |||
UINT nvolenv, npanenv, npitchenv; | UINT nvolenv, npanenv, npitchenv; | |||
skipping to change at line 392 | skipping to change at line 392 | |||
{ | { | |||
MODINSTRUMENT *pins = &Ins[i]; | MODINSTRUMENT *pins = &Ins[i]; | |||
UINT flags = (pins->uFlags & CHN_16BIT) ? RS _PCM16S : RS_PCM8S; | UINT flags = (pins->uFlags & CHN_16BIT) ? RS _PCM16S : RS_PCM8S; | |||
if (!smpinfo[i]) | if (!smpinfo[i]) | |||
{ | { | |||
dwPos += ReadSample(pins, flags, (LP STR)(lpStream+dwPos), dwMemLength - dwPos); | dwPos += ReadSample(pins, flags, (LP STR)(lpStream+dwPos), dwMemLength - dwPos); | |||
} else | } else | |||
{ | { | |||
DWORD dwLen = *((DWORD *)(lpStream+d wPos)); | DWORD dwLen = *((DWORD *)(lpStream+d wPos)); | |||
dwPos += 4; | dwPos += 4; | |||
if ((dwPos+dwLen <= dwMemLength) && (dwLen > 4)) | if ((dwLen < dwMemLength) && (dwLen <= dwMemLength - dwPos) && (dwLen > 4)) | |||
{ | { | |||
flags = (pins->uFlags & CHN_ 16BIT) ? RS_MDL16 : RS_MDL8; | flags = (pins->uFlags & CHN_ 16BIT) ? RS_MDL16 : RS_MDL8; | |||
ReadSample(pins, flags, (LPS TR)(lpStream+dwPos), dwLen); | ReadSample(pins, flags, (LPS TR)(lpStream+dwPos), dwLen); | |||
} | } | |||
dwPos += dwLen; | dwPos += dwLen; | |||
} | } | |||
} | } | |||
break; | break; | |||
} | } | |||
dwMemPos += blocklen; | dwMemPos += blocklen; | |||
End of changes. 2 change blocks. | ||||
3 lines changed or deleted | 3 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |