From 73debdb88d733ed2e9aa5da0bad7dfbc0d908e65 Mon Sep 17 00:00:00 2001 From: Uwe Seimet Date: Mon, 13 Jan 2025 23:29:26 +0100 Subject: [PATCH] Refactoring --- cpp/devices/disk_track.cpp | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/cpp/devices/disk_track.cpp b/cpp/devices/disk_track.cpp index 6066e49d..b16fe42e 100644 --- a/cpp/devices/disk_track.cpp +++ b/cpp/devices/disk_track.cpp @@ -41,27 +41,18 @@ bool DiskTrack::Load(const string &path, uint64_t &cache_miss_read_count) ++cache_miss_read_count; - // Calculate offset (previous tracks are considered to hold 256 sectors) - off_t offset = (off_t)track_number << 8; - offset <<= shift_count; - const int size = sector_count << shift_count; - if (!buffer && !posix_memalign((void**)&buffer, 512, ((size + 511) / 512) * 512)) { - buffer_size = size; - } - - // Reallocate if the buffer length is different - if (buffer && buffer_size != static_cast(size)) { - free(buffer); // NOSONAR free() must be used here because of allocation with posix_memalign + // Allocate or reallocate the buffer + if (!buffer || buffer_size != static_cast(size)) { + free(buffer); // NOSONAR free() must be used here due to posix_memalign buffer = nullptr; - if (!posix_memalign((void**)&buffer, 512, ((size + 511) / 512) * 512)) { - buffer_size = size; + + if (posix_memalign((void**)&buffer, 512, (size + 511) & ~511)) { + return false; } - } - if (!buffer) { - return false; + buffer_size = size; } modified_flags.resize(sector_count); @@ -74,6 +65,10 @@ bool DiskTrack::Load(const string &path, uint64_t &cache_miss_read_count) return false; } + // Calculate offset (previous tracks are considered to hold 256 sectors) + off_t offset = static_cast(track_number) << 8; + offset <<= shift_count; + in.seekg(offset); in.read((char*)buffer, size); return in.good();