summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/ql/rom.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/ql/rom.cpp')
-rw-r--r--src/devices/bus/ql/rom.cpp12
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());
}