From: <sag...@us...> - 2011-01-03 15:11:29
|
Revision: 782 http://modplug.svn.sourceforge.net/modplug/?rev=782&view=rev Author: saga-games Date: 2011-01-03 15:11:22 +0000 (Mon, 03 Jan 2011) Log Message: ----------- [Ref] Added a version of SpaceToNullStringFixed with static length checks (using another template parameter) which should be preferred over the dynamic check version if the string length is known. Modified Paths: -------------- trunk/OpenMPT/mptrack/misc_util.h trunk/OpenMPT/soundlib/LOAD_AMF.CPP trunk/OpenMPT/soundlib/LOAD_DBM.CPP trunk/OpenMPT/soundlib/LOAD_DMF.CPP trunk/OpenMPT/soundlib/LOAD_DSM.CPP trunk/OpenMPT/soundlib/Load_669.cpp trunk/OpenMPT/soundlib/Load_ams.cpp trunk/OpenMPT/soundlib/Load_far.cpp trunk/OpenMPT/soundlib/Load_gdm.cpp trunk/OpenMPT/soundlib/Load_imf.cpp trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/Load_mdl.cpp trunk/OpenMPT/soundlib/Load_mod.cpp trunk/OpenMPT/soundlib/Load_mt2.cpp trunk/OpenMPT/soundlib/Load_mtm.cpp trunk/OpenMPT/soundlib/Load_okt.cpp trunk/OpenMPT/soundlib/Load_psm.cpp trunk/OpenMPT/soundlib/Load_ptm.cpp trunk/OpenMPT/soundlib/Load_s3m.cpp trunk/OpenMPT/soundlib/Load_stm.cpp trunk/OpenMPT/soundlib/Load_ult.cpp trunk/OpenMPT/soundlib/Load_xm.cpp trunk/OpenMPT/soundlib/load_j2b.cpp Modified: trunk/OpenMPT/mptrack/misc_util.h =================================================================== --- trunk/OpenMPT/mptrack/misc_util.h 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/mptrack/misc_util.h 2011-01-03 15:11:22 UTC (rev 782) @@ -189,23 +189,45 @@ //-------------------------------------- { STATIC_ASSERT(size > 0); - bool overwrite = false; - for(size_t pos = 0; pos < size; pos++) + size_t pos = 0; + // Find the first null char. + while(buffer[pos] != '\0' && pos < size) { - if(overwrite) - buffer[pos] = 0; - else if(buffer[pos] == 0) - overwrite = true; + pos++; } + // Remove everything after the null char. + while(pos < size) + { + buffer[pos++] = '\0'; + } } -// Convert a space-padded string to a 0-terminated string. -// Additional parameter to specifify the max length of the final string, +// Convert a space-padded string to a 0-terminated string. STATIC VERSION! (use this if the maximum string length is known) +// Additional template parameter to specifify the max length of the final string, // not including null char (useful for e.g. mod loaders) +template <size_t length, size_t size> +void SpaceToNullStringFixed(char (&buffer)[size]) +//------------------------------------------------ +{ + STATIC_ASSERT(size > 0); + STATIC_ASSERT(length < size); + // Remove Nulls in string + SpaceToNullString(buffer); + // Overwrite trailing chars + for(size_t pos = length; pos < size; pos++) + { + buffer[pos] = 0; + } +} + + +// Convert a space-padded string to a 0-terminated string. DYNAMIC VERSION! +// Additional function parameter to specifify the max length of the final string, +// not including null char (useful for e.g. mod loaders) template <size_t size> -void SpaceToNullStringFixed(char (&buffer)[size], const size_t length) -//-------------------------------------------------------------------- +void SpaceToNullStringFixed(char (&buffer)[size], size_t length) +//-------------------------------------------------------------- { STATIC_ASSERT(size > 0); ASSERT(length < size); Modified: trunk/OpenMPT/soundlib/LOAD_AMF.CPP =================================================================== --- trunk/OpenMPT/soundlib/LOAD_AMF.CPP 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/LOAD_AMF.CPP 2011-01-03 15:11:22 UTC (rev 782) @@ -201,7 +201,7 @@ { MODSAMPLE *psmp = &Samples[iSmp+1]; memcpy(m_szNames[iSmp + 1], lpStream+dwMemPos, 22); - SpaceToNullStringFixed(m_szNames[iSmp + 1], 22); + SpaceToNullStringFixed<22>(m_szNames[iSmp + 1]); psmp->nFineTune = MOD2XMFineTune(lpStream[dwMemPos+22]); psmp->nVolume = lpStream[dwMemPos+23]; psmp->nGlobalVol = 64; @@ -273,7 +273,7 @@ || (pfh->numchannels < 1) || (pfh->numchannels > 32)) return false; memcpy(m_szNames[0], pfh->title, 31); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); dwMemPos = sizeof(AMFFILEHEADER); m_nType = MOD_TYPE_AMF; m_nChannels = pfh->numchannels; @@ -334,8 +334,8 @@ dwMemPos += sizeof(AMFSAMPLE); memcpy(m_szNames[iIns+1], psh->samplename, 31); memcpy(pSmp->filename, psh->filename, 13); - SpaceToNullStringFixed(m_szNames[iIns + 1], 31); - SpaceToNullStringFixed(pSmp->filename, 13); + SpaceToNullStringFixed<31>(m_szNames[iIns + 1]); + SpaceToNullStringFixed<13>(pSmp->filename); pSmp->nLength = LittleEndian(psh->length); pSmp->nC5Speed = LittleEndianW(psh->c2spd); pSmp->nGlobalVol = 64; Modified: trunk/OpenMPT/soundlib/LOAD_DBM.CPP =================================================================== --- trunk/OpenMPT/soundlib/LOAD_DBM.CPP 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/LOAD_DBM.CPP 2011-01-03 15:11:22 UTC (rev 782) @@ -196,7 +196,7 @@ m_nType = MOD_TYPE_DBM; m_nChannels = CLAMP(BigEndianW(pfh->channels), 1, MAX_BASECHANNELS); // note: MAX_BASECHANNELS is currently 127, but DBM supports up to 128 channels. memcpy(m_szNames[0], (pfh->songname[0]) ? pfh->songname : pfh->songname2, 32); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); Order.resize(nOrders, Order.GetInvalidPatIndex()); for (UINT iOrd=0; iOrd < nOrders; iOrd++) { @@ -235,11 +235,11 @@ nsmp = BigEndianW(pih->sampleno); psmp = ((nsmp) && (nsmp < MAX_SAMPLES)) ? &Samples[nsmp] : nullptr; memcpy(pIns->name, pih->name, 30); - SpaceToNullStringFixed(pIns->name, 30); + SpaceToNullStringFixed<30>(pIns->name); if (psmp) { memcpy(m_szNames[nsmp], pih->name, 30); - SpaceToNullStringFixed(m_szNames[nsmp], 30); + SpaceToNullStringFixed<30>(m_szNames[nsmp]); } pIns->nFadeOut = 1024; // ??? Modified: trunk/OpenMPT/soundlib/LOAD_DMF.CPP =================================================================== --- trunk/OpenMPT/soundlib/LOAD_DMF.CPP 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/LOAD_DMF.CPP 2011-01-03 15:11:22 UTC (rev 782) @@ -100,7 +100,7 @@ if ((pfh->id != 0x464d4444) || (!pfh->version) || (pfh->version & 0xF0)) return false; dwMemPos = 66; memcpy(m_szNames[0], pfh->songname, 30); - SpaceToNullStringFixed(m_szNames[0], 30); + SpaceToNullStringFixed<30>(m_szNames[0]); m_nType = MOD_TYPE_DMF; m_nChannels = 0; #ifdef DMFLOG Modified: trunk/OpenMPT/soundlib/LOAD_DSM.CPP =================================================================== --- trunk/OpenMPT/soundlib/LOAD_DSM.CPP 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/LOAD_DSM.CPP 2011-01-03 15:11:22 UTC (rev 782) @@ -121,7 +121,7 @@ } } memcpy(m_szNames[0], psong->songname, 28); - SpaceToNullStringFixed(m_szNames[0], 28); + SpaceToNullStringFixed<28>(m_szNames[0]); nPat = 0; nSmp = 1; while (dwMemPos < dwMemLength - 8) @@ -215,10 +215,10 @@ DWORD dwPos = dwMemPos + sizeof(DSMSAMPLE); dwMemPos += 8 + pSmp->inst_len; memcpy(m_szNames[nSmp], pSmp->samplename, 28); - SpaceToNullStringFixed(m_szNames[nSmp], 28); + SpaceToNullStringFixed<28>(m_szNames[nSmp]); MODSAMPLE *psmp = &Samples[nSmp]; memcpy(psmp->filename, pSmp->filename, 13); - SpaceToNullStringFixed(psmp->filename, 13); + SpaceToNullStringFixed<13>(psmp->filename); psmp->nGlobalVol = 64; psmp->nC5Speed = pSmp->c2spd; psmp->uFlags = (WORD)((pSmp->flags & 1) ? CHN_LOOP : 0); Modified: trunk/OpenMPT/soundlib/Load_669.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_669.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_669.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -70,7 +70,7 @@ m_nChannels = 8; memcpy(m_szNames[0], pfh->songmessage, 16); - SpaceToNullStringFixed(m_szNames[0], 16); + SpaceToNullStringFixed<16>(m_szNames[0]); m_nSamples = pfh->samples; for (SAMPLEINDEX nSmp = 1; nSmp <= m_nSamples; nSmp++, psmp++) @@ -87,7 +87,7 @@ Samples[nSmp].nLoopEnd = loopend; if (loopend) Samples[nSmp].uFlags |= CHN_LOOP; memcpy(m_szNames[nSmp], psmp->filename, 13); - SpaceToNullStringFixed(m_szNames[nSmp], 13); + SpaceToNullStringFixed<13>(m_szNames[nSmp]); Samples[nSmp].nVolume = 256; Samples[nSmp].nGlobalVol = 64; Samples[nSmp].nPan = 128; Modified: trunk/OpenMPT/soundlib/Load_ams.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_ams.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_ams.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -599,6 +599,7 @@ // AMS Sample unpacking void AMSUnpack(const char *psrc, UINT inputlen, char *pdest, UINT dmax, char packcharacter) +//----------------------------------------------------------------------------------------- { UINT tmplen = dmax; signed char *amstmp = new signed char[tmplen]; Modified: trunk/OpenMPT/soundlib/Load_far.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_far.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_far.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -88,7 +88,7 @@ m_nDefaultGlobalVolume = MAX_GLOBAL_VOLUME; memcpy(m_szNames[0], pmh1->songname, 31); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); // Channel Setting for (UINT nchpan=0; nchpan<16; nchpan++) @@ -246,7 +246,7 @@ dwMemPos += sizeof(FARSAMPLE); m_nSamples = ismp + 1; memcpy(m_szNames[ismp+1], pfs->samplename, 31); - SpaceToNullStringFixed(m_szNames[ismp + 1], 31); + SpaceToNullStringFixed<31>(m_szNames[ismp + 1]); const DWORD length = LittleEndian( pfs->length ); pSmp->nLength = length; pSmp->nLoopStart = LittleEndian(pfs->reppos) ; Modified: trunk/OpenMPT/soundlib/Load_gdm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_gdm.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_gdm.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -102,7 +102,7 @@ // song name memset(m_szNames, 0, sizeof(m_szNames)); memcpy(m_szNames[0], pHeader->SongTitle, 32); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); // read channel pan map... 0...15 = channel panning, 16 = surround channel, 255 = channel does not exist m_nChannels = 32; @@ -163,9 +163,9 @@ // sample header memcpy(m_szNames[iSmp], pSample->SamName, 32); - SpaceToNullStringFixed(m_szNames[iSmp], 31); + SpaceToNullStringFixed<31>(m_szNames[iSmp]); memcpy(Samples[iSmp].filename, pSample->FileName, 12); - SpaceToNullStringFixed(Samples[iSmp].filename, 12); + SpaceToNullStringFixed<12>(Samples[iSmp].filename); Samples[iSmp].nC5Speed = LittleEndianW(pSample->C4Hertz); Samples[iSmp].nGlobalVol = 256; // not supported in this format Modified: trunk/OpenMPT/soundlib/Load_imf.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_imf.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_imf.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -291,7 +291,7 @@ // song name memset(m_szNames, 0, sizeof(m_szNames)); memcpy(m_szNames[0], hdr.title, 31); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); if (hdr.flags & 1) m_dwSongFlags |= SONG_LINEARSLIDES; @@ -310,7 +310,7 @@ ChnSettings[nChn].nPan *= 4; memcpy(ChnSettings[nChn].szName, hdr.channels[nChn].name, 12); - SpaceToNullStringFixed(ChnSettings[nChn].szName, 12); + SpaceToNullStringFixed<12>(ChnSettings[nChn].szName); // TODO: reverb/chorus? switch(hdr.channels[nChn].status) @@ -503,7 +503,7 @@ SetDefaultInstrumentValues(pIns); memcpy(pIns->name, imfins.name, 31); - SpaceToNullStringFixed(pIns->name, 31); + SpaceToNullStringFixed<31>(pIns->name); if(imfins.smpnum) { @@ -542,7 +542,7 @@ return false; memcpy(pSample->filename, imfsmp.filename, 12); - SpaceToNullStringFixed(pSample->filename, 12); + SpaceToNullStringFixed<12>(pSample->filename); strcpy(m_szNames[m_nSamples], pSample->filename); blen = pSample->nLength = LittleEndian(imfsmp.length); Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -298,8 +298,8 @@ const ITOLDINSTRUMENT *pis = (const ITOLDINSTRUMENT *)p; memcpy(pIns->name, pis->name, 26); memcpy(pIns->filename, pis->filename, 12); - SpaceToNullStringFixed(pIns->name, 26); - SpaceToNullStringFixed(pIns->filename, 12); + SpaceToNullStringFixed<26>(pIns->name); + SpaceToNullStringFixed<12>(pIns->filename); pIns->nFadeOut = pis->fadeout << 6; pIns->nGlobalVol = 64; for (UINT j=0; j<NOTE_MAX; j++) @@ -340,8 +340,8 @@ const ITINSTRUMENT *pis = (const ITINSTRUMENT *)p; memcpy(pIns->name, pis->name, 26); memcpy(pIns->filename, pis->filename, 12); - SpaceToNullStringFixed(pIns->name, 26); - SpaceToNullStringFixed(pIns->filename, 12); + SpaceToNullStringFixed<26>(pIns->name); + SpaceToNullStringFixed<12>(pIns->filename); if (pis->mpr<=128) pIns->nMidiProgram = pis->mpr; pIns->nMidiChannel = pis->mch; @@ -579,7 +579,7 @@ if (pifh->flags & 0x1000) m_dwSongFlags |= SONG_EXFILTERRANGE; memcpy(m_szNames[0], pifh->songname, 26); - SpaceToNullStringFixed(m_szNames[0], 26); + SpaceToNullStringFixed<26>(m_szNames[0]); // Global Volume m_nDefaultGlobalVolume = pifh->globalvol << 1; @@ -934,7 +934,7 @@ { MODSAMPLE *pSmp = &Samples[nsmp+1]; memcpy(pSmp->filename, pis->filename, 12); - SpaceToNullStringFixed(pSmp->filename, 12); + SpaceToNullStringFixed<12>(pSmp->filename); pSmp->uFlags = 0; pSmp->nLength = 0; pSmp->nLoopStart = pis->loopbegin; @@ -989,7 +989,7 @@ } } memcpy(m_szNames[nsmp + 1], pis->name, 26); - SpaceToNullStringFixed(m_szNames[nsmp + 1], 26); + SpaceToNullStringFixed<26>(m_szNames[nsmp + 1]); } m_nSamples = max(1, m_nSamples); Modified: trunk/OpenMPT/soundlib/Load_mdl.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mdl.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_mdl.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -275,7 +275,7 @@ #endif pmib = (MDLINFOBLOCK *)(lpStream+dwMemPos); memcpy(m_szNames[0], pmib->songname, 31); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); norders = pmib->norders; if (norders > MAX_ORDERS) norders = MAX_ORDERS; @@ -370,7 +370,7 @@ MODINSTRUMENT *pIns = Instruments[nins]; memset(pIns, 0, sizeof(MODINSTRUMENT)); memcpy(pIns->name, lpStream+dwPos+2, 32); - SpaceToNullStringFixed(pIns->name, 31); + SpaceToNullStringFixed<31>(pIns->name); pIns->nGlobalVol = 64; pIns->nPPC = 5*12; @@ -461,8 +461,8 @@ MODSAMPLE *pSmp = &Samples[nins]; memcpy(m_szNames[nins], lpStream+dwPos+1, 31); memcpy(pSmp->filename, lpStream+dwPos+33, 8); - SpaceToNullStringFixed(m_szNames[nins], 31); - SpaceToNullStringFixed(pSmp->filename, 8); + SpaceToNullStringFixed<31>(m_szNames[nins]); + SpaceToNullStringFixed<8>(pSmp->filename); const BYTE *p = lpStream+dwPos+41; if (pmsh->version > 0) { Modified: trunk/OpenMPT/soundlib/Load_mod.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mod.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_mod.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -300,7 +300,7 @@ UINT loopstart, looplen; memcpy(m_szNames[i], pms->name, 22); - SpaceToNullStringFixed(m_szNames[i], 22); + SpaceToNullStringFixed<22>(m_szNames[i]); psmp->uFlags = 0; psmp->nLength = BigEndianW(pms->length)*2; dwTotalSampleLen += psmp->nLength; @@ -417,7 +417,7 @@ m_nMinPeriod = 14 << 2; m_nMaxPeriod = 3424 << 2; memcpy(m_szNames[0], lpStream, 20); - SpaceToNullStringFixed(m_szNames[0], 20); + SpaceToNullStringFixed<20>(m_szNames[0]); // Setup channel pan positions and volume SetupMODPanning(); Modified: trunk/OpenMPT/soundlib/Load_mt2.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mt2.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_mt2.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -214,7 +214,7 @@ Order[iOrd] = (PATTERNINDEX)pfh->Orders[iOrd]; } memcpy(m_szNames[0], pfh->szSongName, 32); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); dwMemPos = sizeof(MT2FILEHEADER); nDrumDataLen = *(WORD *)(lpStream + dwMemPos); @@ -407,7 +407,7 @@ { memcpy(Instruments[iIns], &m_defaultInstrument, sizeof(MODINSTRUMENT)); memcpy(pIns->name, pmi->szName, 32); - SpaceToNullStringFixed(pIns->name, 31); + SpaceToNullStringFixed<31>(pIns->name); pIns->nGlobalVol = 64; pIns->nPan = 128; for (BYTE i = 0; i < NOTE_MAX; i++) @@ -520,7 +520,7 @@ if (iSmp < MAX_SAMPLES) { memcpy(m_szNames[iSmp], pms->szName, 31); - SpaceToNullStringFixed(m_szNames[iSmp], 31); + SpaceToNullStringFixed<31>(m_szNames[iSmp]); } if (pms->dwDataLen > 0) { Modified: trunk/OpenMPT/soundlib/Load_mtm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mtm.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_mtm.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -61,7 +61,7 @@ || (!pmh->numtracks) || (!pmh->numchannels) || (!pmh->lastpattern) || (pmh->lastpattern > MAX_PATTERNS)) return false; memcpy(m_szNames[0], pmh->songname, 20); - SpaceToNullStringFixed(m_szNames[0], 20); + SpaceToNullStringFixed<20>(m_szNames[0]); if (dwMemPos + 37 * pmh->numsamples + 128 + 192 * pmh->numtracks + 64 * (pmh->lastpattern+1) + pmh->commentsize >= dwMemLength) return false; @@ -73,7 +73,7 @@ { MTMSAMPLE *pms = (MTMSAMPLE *)(lpStream + dwMemPos); memcpy(m_szNames[i], pms->samplename, 22); - SpaceToNullStringFixed(m_szNames[i], 22); + SpaceToNullStringFixed<22>(m_szNames[i]); Samples[i].nVolume = pms->volume << 2; Samples[i].nGlobalVol = 64; UINT len = pms->length; Modified: trunk/OpenMPT/soundlib/Load_okt.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_okt.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_okt.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -74,7 +74,7 @@ MemsetZero(*pSmp); strncpy(pSndFile->m_szNames[nSmp], oktsmp.name, 20); - SpaceToNullStringFixed(pSndFile->m_szNames[nSmp], 20); + SpaceToNullStringFixed<20>(pSndFile->m_szNames[nSmp]); pSmp->nC5Speed = 8287; pSmp->nGlobalVol = 64; Modified: trunk/OpenMPT/soundlib/Load_psm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_psm.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_psm.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -186,7 +186,7 @@ { case PSMCHUNKID_TITL: // "TITL" - Song Title memcpy(m_szNames[0], lpStream + dwMemPos, (chunkSize < 31) ? chunkSize : 31); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); break; case PSMCHUNKID_SDFT: // "SDFT" - Format info (song data starts here) @@ -220,7 +220,7 @@ PSMSUBSONG subsong; subsong.restartPos = (ORDERINDEX)Order.size(); // restart order "offset": current orderlist length memcpy(subsong.songName, &pSong->songType, 9); // subsong name - SpaceToNullStringFixed(subsong.songName, 9); + SpaceToNullStringFixed<9>(subsong.songName); DWORD dwChunkPos = dwMemPos + sizeof(PSMSONGHEADER); @@ -445,9 +445,9 @@ SAMPLEINDEX smp = (SAMPLEINDEX)(LittleEndianW(pSample->sampleNumber) + 1); m_nSamples = max(m_nSamples, smp); memcpy(m_szNames[smp], pSample->sampleName, 31); - SpaceToNullStringFixed(m_szNames[smp], 31); + SpaceToNullStringFixed<31>(m_szNames[smp]); memcpy(Samples[smp].filename, pSample->fileName, 8); - SpaceToNullStringFixed(Samples[smp].filename, 8); + SpaceToNullStringFixed<8>(Samples[smp].filename); Samples[smp].nGlobalVol = 0x40; Samples[smp].nC5Speed = LittleEndianW(pSample->C5Freq); @@ -469,9 +469,9 @@ SAMPLEINDEX smp = (SAMPLEINDEX)(LittleEndianW(pSample->sampleNumber) + 1); m_nSamples = max(m_nSamples, smp); memcpy(m_szNames[smp], pSample->sampleName, 31); - SpaceToNullStringFixed(m_szNames[smp], 31); + SpaceToNullStringFixed<31>(m_szNames[smp]); memcpy(Samples[smp].filename, pSample->fileName, 8); - SpaceToNullStringFixed(Samples[smp].filename, 8); + SpaceToNullStringFixed<8>(Samples[smp].filename); Samples[smp].nGlobalVol = 0x40; Samples[smp].nC5Speed = LittleEndianW(pSample->C5Freq); @@ -895,7 +895,7 @@ memset(m_szNames, 0, sizeof(m_szNames)); memcpy(m_szNames[0], shdr->songName, 31); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); // Read orders dwMemPos = LittleEndian(shdr->orderOffset); @@ -935,9 +935,9 @@ m_nSamples = max(m_nSamples, iSmp); memcpy(m_szNames[iSmp], smphdr->name, 24); - SpaceToNullStringFixed(m_szNames[iSmp], 24); + SpaceToNullStringFixed<24>(m_szNames[iSmp]); memcpy(Samples[iSmp].filename, smphdr->filename, 13); - SpaceToNullStringFixed(Samples[iSmp].filename, 13); + SpaceToNullStringFixed<13>(Samples[iSmp].filename); Samples[iSmp].nLength = LittleEndian(smphdr->length); Samples[iSmp].nLoopStart = LittleEndian(smphdr->loopStart); Modified: trunk/OpenMPT/soundlib/Load_ptm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_ptm.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_ptm.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -91,7 +91,7 @@ || (!pfh.npatterns) || (pfh.npatterns > 128) || (SIZEOF_PTMFILEHEADER+pfh.nsamples*SIZEOF_PTMSAMPLE >= (int)dwMemLength)) return false; memcpy(m_szNames[0], pfh.songname, 28); - SpaceToNullStringFixed(m_szNames[0], 28); + SpaceToNullStringFixed<28>(m_szNames[0]); m_nType = MOD_TYPE_PTM; m_nChannels = pfh.nchannels; @@ -112,8 +112,8 @@ lstrcpyn(m_szNames[ismp+1], psmp->samplename, 28); memcpy(pSmp->filename, psmp->filename, 12); - SpaceToNullStringFixed(m_szNames[ismp + 1], 28); - SpaceToNullStringFixed(pSmp->filename, 12); + SpaceToNullStringFixed<28>(m_szNames[ismp + 1]); + SpaceToNullStringFixed<12>(pSmp->filename); pSmp->nGlobalVol = 64; pSmp->nPan = 128; Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_s3m.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_s3m.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -267,7 +267,7 @@ m_nType = MOD_TYPE_S3M; memset(m_szNames, 0, sizeof(m_szNames)); memcpy(m_szNames[0], psfh.name, 28); - SpaceToNullStringFixed(m_szNames[0], 28); + SpaceToNullStringFixed<28>(m_szNames[0]); // Speed m_nDefaultSpeed = psfh.speed; if (!m_nDefaultSpeed || m_nDefaultSpeed == 255) m_nDefaultSpeed = 6; @@ -355,13 +355,13 @@ memcpy(s, lpStream+nInd, 0x50); memcpy(Samples[iSmp].filename, s+1, 12); - SpaceToNullStringFixed(Samples[iSmp].filename, 12); + SpaceToNullStringFixed<12>(Samples[iSmp].filename); insflags[iSmp-1] = s[0x1F]; inspack[iSmp-1] = s[0x1E]; s[0x4C] = 0; lstrcpy(m_szNames[iSmp], (LPCSTR)&s[0x30]); - SpaceToNullStringFixed(m_szNames[iSmp], 28); + SpaceToNullStringFixed<28>(m_szNames[iSmp]); if ((s[0] == S3I_TYPE_PCM) && (s[0x4E] == 'R') && (s[0x4F] == 'S')) { Modified: trunk/OpenMPT/soundlib/Load_stm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_stm.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_stm.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -70,7 +70,7 @@ || ((_strnicmp(phdr->trackername, "!SCREAM!", 8)) && (_strnicmp(phdr->trackername, "BMOD2STM", 8)))) return false; memcpy(m_szNames[0], phdr->songname, 20); - SpaceToNullStringFixed(m_szNames[0], 20); + SpaceToNullStringFixed<20>(m_szNames[0]); // Read STM header m_nType = MOD_TYPE_STM; m_nSamples = 31; @@ -98,8 +98,8 @@ STMSAMPLE *pStm = &phdr->sample[nIns]; // STM sample data memcpy(pIns->filename, pStm->filename, 13); memcpy(m_szNames[nIns+1], pStm->filename, 12); - SpaceToNullStringFixed(pIns->filename, 12); - SpaceToNullStringFixed(m_szNames[nIns + 1], 12); + SpaceToNullStringFixed<12>(pIns->filename); + SpaceToNullStringFixed<12>(m_szNames[nIns + 1]); pIns->nC5Speed = LittleEndianW(pStm->c2spd); pIns->nGlobalVol = 64; pIns->nVolume = pStm->volume << 2; Modified: trunk/OpenMPT/soundlib/Load_ult.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_ult.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_ult.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -371,7 +371,7 @@ memcpy(m_szNames[nSmp + 1], ultSmp.name, 32); SetNullTerminator(m_szNames[nSmp + 1]); memcpy(pSmp->filename, ultSmp.filename, 12); - SpaceToNullStringFixed(pSmp->filename, 12); + SpaceToNullStringFixed<12>(pSmp->filename); if(ultSmp.size_end <= ultSmp.size_start) continue; Modified: trunk/OpenMPT/soundlib/Load_xm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_xm.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/Load_xm.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -254,7 +254,7 @@ // look for null-terminated song name - that's most likely a tune made with modplug for(int i = 0; i < 20; i++) if(lpStream[17 + i] == 0) bProbablyMadeWithModPlug = true; - SpaceToNullStringFixed(m_szNames[0], 20); + SpaceToNullStringFixed<20>(m_szNames[0]); // load and convert header memcpy(&xmheader, lpStream + 58, sizeof(XMFILEHEADER)); @@ -325,7 +325,7 @@ Instruments[iIns]->nPluginVolumeHandling = PLUGIN_VOLUMEHANDLING_IGNORE; memcpy(Instruments[iIns]->name, pih.name, 22); - SpaceToNullStringFixed(Instruments[iIns]->name, 22); + SpaceToNullStringFixed<22>(Instruments[iIns]->name); memset(&xmsh, 0, sizeof(XMSAMPLEHEADER)); @@ -528,7 +528,7 @@ if (!xmss.looplen) xmss.type &= ~3; UINT imapsmp = samplemap[ins]; memcpy(m_szNames[imapsmp], xmss.name, 22); - SpaceToNullStringFixed(m_szNames[imapsmp], 22); + SpaceToNullStringFixed<22>(m_szNames[imapsmp]); MODSAMPLE *pSmp = &Samples[imapsmp]; pSmp->nLength = (xmss.samplen > MAX_SAMPLE_LENGTH) ? MAX_SAMPLE_LENGTH : xmss.samplen; pSmp->nLoopStart = xmss.loopstart; @@ -557,7 +557,7 @@ pSmp->nVibDepth = xmsh.vibdepth; pSmp->nVibRate = xmsh.vibrate; memcpy(pSmp->filename, xmss.name, 22); - SpaceToNullStringFixed(pSmp->filename, 21); + SpaceToNullStringFixed<21>(pSmp->filename); if ((xmss.type & 3) == 3) // MPT 1.09 and maybe newer / older versions set both flags for bidi loops bProbablyMPT109 = true; Modified: trunk/OpenMPT/soundlib/load_j2b.cpp =================================================================== --- trunk/OpenMPT/soundlib/load_j2b.cpp 2011-01-03 14:49:21 UTC (rev 781) +++ trunk/OpenMPT/soundlib/load_j2b.cpp 2011-01-03 15:11:22 UTC (rev 782) @@ -487,7 +487,7 @@ ASSERT_CAN_READ_CHUNK(mainchunk->channels); memcpy(m_szNames[0], mainchunk->songname, 32); - SpaceToNullStringFixed(m_szNames[0], 31); + SpaceToNullStringFixed<31>(m_szNames[0]); m_dwSongFlags = SONG_ITOLDEFFECTS | SONG_ITCOMPATGXX; if(!(mainchunk->flags & 0x01)) m_dwSongFlags |= SONG_LINEARSLIDES; if(mainchunk->channels < 1) return false; @@ -558,7 +558,7 @@ m_nInstruments = max(m_nInstruments, nIns); memcpy(pIns->name, instheader->name, 28); - SpaceToNullStringFixed(pIns->name, 28); + SpaceToNullStringFixed<28>(pIns->name); for(BYTE i = 0; i < 128; i++) { @@ -599,7 +599,7 @@ if(smpchunk->signature != AMCHUNKID_SAMP) break; // SAMP memcpy(m_szNames[nSmp], smpchunk->name, 28); - SpaceToNullStringFixed(m_szNames[nSmp], 28); + SpaceToNullStringFixed<28>(m_szNames[nSmp]); Samples[nSmp].nPan = smpchunk->pan << 2; Samples[nSmp].nVolume = smpchunk->volume << 2; @@ -669,7 +669,7 @@ m_nInstruments = max(m_nInstruments, nIns); memcpy(pIns->name, instheader->name, 32); - SpaceToNullStringFixed(pIns->name, 31); + SpaceToNullStringFixed<31>(pIns->name); for(BYTE i = 0; i < 128; i++) { @@ -717,7 +717,7 @@ MemsetZero(Samples[nSmp]); memcpy(m_szNames[nSmp], smpchunk->name, 32); - SpaceToNullStringFixed(m_szNames[nSmp], 31); + SpaceToNullStringFixed<31>(m_szNames[nSmp]); if(LittleEndianW(smpchunk->pan) > 0x7FFF || LittleEndianW(smpchunk->volume) > 0x7FFF) break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |