diff options
Diffstat (limited to 'src/devices/bus/ql/rom.cpp')
-rw-r--r-- | src/devices/bus/ql/rom.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/devices/bus/ql/rom.cpp b/src/devices/bus/ql/rom.cpp index 82af5a35a4a..ab0e3c1e765 100644 --- a/src/devices/bus/ql/rom.cpp +++ b/src/devices/bus/ql/rom.cpp @@ -9,6 +9,8 @@ #include "emu.h" #include "rom.h" +#include <tuple> + //************************************************************************** @@ -87,11 +89,17 @@ void ql_rom_cartridge_slot_device::device_start() std::pair<std::error_condition, std::string> ql_rom_cartridge_slot_device::call_load() { + std::error_condition err; + if (m_card) { if (!loaded_through_softlist()) { - fread(m_card->m_rom, length()); + size_t const size = length(); + size_t actual; + std::tie(err, m_card->m_rom, actual) = util::read(image_core_file(), size); + if (!err && (actual != size)) + err = std::errc::io_error; } else { @@ -99,7 +107,7 @@ std::pair<std::error_condition, std::string> ql_rom_cartridge_slot_device::call_ } } - return std::make_pair(std::error_condition(), std::string()); + return std::make_pair(err, std::string()); } |