From f2a32c6d134c76f0bd1dac9b910c19a903d8f095 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Thu, 1 May 2025 16:35:22 +0200 Subject: [PATCH] Codechange: use std::byte instead of char for calculating arbitrary byte offsets --- src/music/dmusic.cpp | 22 +++++++++++----------- src/settings.cpp | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/music/dmusic.cpp b/src/music/dmusic.cpp index 0b099d3708..e4863997b1 100644 --- a/src/music/dmusic.cpp +++ b/src/music/dmusic.cpp @@ -972,7 +972,7 @@ static std::optional LoadDefaultDLSFile(std::optionalRelease(); return "Can't get instrument download buffer"; } - char *inst_base = (char *)instrument; + const std::byte *inst_base = reinterpret_cast(instrument); /* Fill download header. */ DMUS_DOWNLOADINFO *d_info = (DMUS_DOWNLOADINFO *)instrument; @@ -990,18 +990,18 @@ static std::optional LoadDefaultDLSFile(std::optional(inst_data) - inst_base; inst_data->ulPatch = (dls_file.instruments[i].hdr.Locale.ulBank & F_INSTRUMENT_DRUMS) | ((dls_file.instruments[i].hdr.Locale.ulBank & 0x7F7F) << 8) | (dls_file.instruments[i].hdr.Locale.ulInstrument & 0x7F); instrument = inst_data + 1; /* Write global articulations. */ if (!dls_file.instruments[i].articulators.empty()) { inst_data->ulGlobalArtIdx = last_offset; - offset_table[last_offset++] = (char *)instrument - inst_base; - offset_table[last_offset++] = (char *)instrument + sizeof(DMUS_ARTICULATION2) - inst_base; + offset_table[last_offset++] = reinterpret_cast(instrument) - inst_base; + offset_table[last_offset++] = reinterpret_cast(instrument) + sizeof(DMUS_ARTICULATION2) - inst_base; instrument = DownloadArticulationData(inst_data->ulGlobalArtIdx, instrument, dls_file.instruments[i].articulators); - assert((char *)instrument - inst_base <= (ptrdiff_t)inst_size); + assert(reinterpret_cast(instrument) - inst_base <= (ptrdiff_t)inst_size); } /* Write out regions. */ @@ -1010,7 +1010,7 @@ static std::optional LoadDefaultDLSFile(std::optional(inst_region) - inst_base; inst_region->RangeKey = rgn.hdr.RangeKey; inst_region->RangeVelocity = rgn.hdr.RangeVelocity; inst_region->fusOptions = rgn.hdr.fusOptions; @@ -1026,25 +1026,25 @@ static std::optional LoadDefaultDLSFile(std::optionalWSMP = rgn.wave_sample; if (!rgn.wave_loops.empty()) MemCpyT(inst_region->WLOOP, &rgn.wave_loops.front(), rgn.wave_loops.size()); - instrument = (char *)(inst_region + 1) - sizeof(DMUS_REGION::WLOOP) + sizeof(WLOOP) * rgn.wave_loops.size(); + instrument = reinterpret_cast(inst_region + 1) - sizeof(DMUS_REGION::WLOOP) + sizeof(WLOOP) * rgn.wave_loops.size(); } else { inst_region->WSMP = rgn.wave_sample; if (!dls_file.waves[wave_id].wave_loops.empty()) MemCpyT(inst_region->WLOOP, &dls_file.waves[wave_id].wave_loops.front(), dls_file.waves[wave_id].wave_loops.size()); - instrument = (char *)(inst_region + 1) - sizeof(DMUS_REGION::WLOOP) + sizeof(WLOOP) * dls_file.waves[wave_id].wave_loops.size(); + instrument = reinterpret_cast(inst_region + 1) - sizeof(DMUS_REGION::WLOOP) + sizeof(WLOOP) * dls_file.waves[wave_id].wave_loops.size(); } /* Write local articulator data. */ if (!rgn.articulators.empty()) { inst_region->ulRegionArtIdx = last_offset; - offset_table[last_offset++] = (char *)instrument - inst_base; - offset_table[last_offset++] = (char *)instrument + sizeof(DMUS_ARTICULATION2) - inst_base; + offset_table[last_offset++] = reinterpret_cast(instrument) - inst_base; + offset_table[last_offset++] = reinterpret_cast(instrument) + sizeof(DMUS_ARTICULATION2) - inst_base; instrument = DownloadArticulationData(inst_region->ulRegionArtIdx, instrument, rgn.articulators); } else { inst_region->ulRegionArtIdx = 0; } - assert((char *)instrument - inst_base <= (ptrdiff_t)inst_size); + assert(reinterpret_cast(instrument) - inst_base <= (ptrdiff_t)inst_size); /* Link to the next region unless this was the last one.*/ inst_region->ulNextRegionIdx = j < dls_file.instruments[i].regions.size() - 1 ? last_offset : 0; diff --git a/src/settings.cpp b/src/settings.cpp index 19d570795f..8fcb09d4fc 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -289,7 +289,7 @@ static bool LoadIntList(std::optional str, void *array, int ne auto opt_items = ParseIntList(*str); if (!opt_items.has_value() || opt_items->size() != (size_t)nelems) return false; - char *p = static_cast(array); + std::byte *p = static_cast(array); for (auto item : *opt_items) { WriteValue(p, type, item); p += elem_size;