mirror of
https://github.com/holub/mame
synced 2025-04-23 08:49:55 +03:00
this should fix a coverity error (nw)
This commit is contained in:
parent
7293450835
commit
c9dc9feacc
@ -641,41 +641,38 @@ void info_xml_creator::output_rom(driver_enumerator *drivlist, device_t &device)
|
||||
for (int rom_type = 0; rom_type < 3; rom_type++)
|
||||
for (const rom_entry *region = rom_first_region(device); region != nullptr; region = rom_next_region(region))
|
||||
{
|
||||
bool is_disk = ROMREGION_ISDISKDATA(region);
|
||||
bool const is_disk = ROMREGION_ISDISKDATA(region);
|
||||
|
||||
// disk regions only work for disks
|
||||
if ((is_disk && rom_type != 2) || (!is_disk && rom_type == 2))
|
||||
continue;
|
||||
|
||||
// iterate through ROM entries
|
||||
std::string bios_name;
|
||||
for (const rom_entry *rom = rom_first_file(region); rom != nullptr; rom = rom_next_file(rom))
|
||||
{
|
||||
bool is_bios = ROM_GETBIOSFLAGS(rom);
|
||||
const char *name = ROM_GETNAME(rom);
|
||||
int offset = ROM_GETOFFSET(rom);
|
||||
const char *merge_name = nullptr;
|
||||
char bios_name[100];
|
||||
|
||||
// BIOS ROMs only apply to bioses
|
||||
bool const is_bios = ROM_GETBIOSFLAGS(rom);
|
||||
if ((is_bios && rom_type != 0) || (!is_bios && rom_type == 0))
|
||||
continue;
|
||||
|
||||
// if we have a valid ROM and we are a clone, see if we can find the parent ROM
|
||||
util::hash_collection hashes(ROM_GETHASHDATA(rom));
|
||||
if (do_merge_name && !hashes.flag(util::hash_collection::FLAG_NO_DUMP))
|
||||
merge_name = get_merge_name(*drivlist, hashes);
|
||||
const char *const merge_name = (do_merge_name && !hashes.flag(util::hash_collection::FLAG_NO_DUMP)) ? get_merge_name(*drivlist, hashes) : nullptr;
|
||||
|
||||
// scan for a BIOS name
|
||||
bios_name[0] = 0;
|
||||
bios_name.clear();
|
||||
if (!is_disk && is_bios)
|
||||
{
|
||||
// scan backwards through the ROM entries
|
||||
for (const rom_entry *brom = rom - 1; brom != device.rom_region(); brom--)
|
||||
{
|
||||
if (ROMENTRY_ISSYSTEM_BIOS(brom))
|
||||
{
|
||||
strcpy(bios_name, ROM_GETNAME(brom));
|
||||
bios_name = ROM_GETNAME(brom);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::ostringstream output;
|
||||
@ -687,12 +684,13 @@ void info_xml_creator::output_rom(driver_enumerator *drivlist, device_t &device)
|
||||
output << "\t\t<disk";
|
||||
|
||||
// add name, merge, bios, and size tags */
|
||||
if (name != nullptr && name[0] != 0)
|
||||
const char *const name = ROM_GETNAME(rom);
|
||||
if (name && name[0])
|
||||
util::stream_format(output, " name=\"%s\"", util::xml::normalize_string(name));
|
||||
if (merge_name != nullptr)
|
||||
if (merge_name)
|
||||
util::stream_format(output, " merge=\"%s\"", util::xml::normalize_string(merge_name));
|
||||
if (bios_name[0] != 0)
|
||||
util::stream_format(output, " bios=\"%s\"", util::xml::normalize_string(bios_name));
|
||||
if (!bios_name.empty())
|
||||
util::stream_format(output, " bios=\"%s\"", util::xml::normalize_string(bios_name.c_str()));
|
||||
if (!is_disk)
|
||||
util::stream_format(output, " size=\"%u\"", rom_file_size(rom));
|
||||
|
||||
@ -708,13 +706,14 @@ void info_xml_creator::output_rom(driver_enumerator *drivlist, device_t &device)
|
||||
// append a region name
|
||||
util::stream_format(output, " region=\"%s\"", ROMREGION_GETTAG(region));
|
||||
|
||||
// for non-disk entries, print offset
|
||||
if (!is_disk)
|
||||
util::stream_format(output, " offset=\"%x\"", offset);
|
||||
|
||||
// for disk entries, add the disk index
|
||||
{
|
||||
// for non-disk entries, print offset
|
||||
util::stream_format(output, " offset=\"%x\"", ROM_GETOFFSET(rom));
|
||||
}
|
||||
else
|
||||
{
|
||||
// for disk entries, add the disk index
|
||||
util::stream_format(output, " index=\"%x\"", DISK_GETINDEX(rom));
|
||||
util::stream_format(output, " writable=\"%s\"", DISK_ISREADONLY(rom) ? "no" : "yes");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user