Disallow zero-length regions in ROM definitions and software lists

This commit is contained in:
AJR 2023-10-22 10:38:48 -04:00
parent 087233e15b
commit e5c4907791
7 changed files with 25 additions and 21 deletions

View file

@ -70,7 +70,7 @@ SuperKickstart disks, SCSI installation disks and AMIX
</part>
<part name="tape" interface="a3000_cass">
<feature name="part_id" value="Installation Tape"/>
<dataarea name="cass" size="0">
<dataarea name="cass" size="1">
<rom name="cass" size="0" status="nodump" />
</dataarea>
</part>
@ -94,7 +94,7 @@ SuperKickstart disks, SCSI installation disks and AMIX
</part>
<part name="tape" interface="a3000_cass">
<feature name="part_id" value="Installation Tape"/>
<dataarea name="cass" size="0">
<dataarea name="cass" size="1">
<rom name="cass" size="0" status="nodump" />
</dataarea>
</part>
@ -118,7 +118,7 @@ SuperKickstart disks, SCSI installation disks and AMIX
</part>
<part name="tape" interface="a3000_cass">
<feature name="part_id" value="Installation Tape"/>
<dataarea name="cass" size="0">
<dataarea name="cass" size="1">
<rom name="cass" size="0" status="nodump" />
</dataarea>
</part>
@ -148,7 +148,7 @@ SuperKickstart disks, SCSI installation disks and AMIX
</part>
<part name="tape" interface="a3000_cass">
<feature name="part_id" value="Installation Tape"/>
<dataarea name="cass" size="0">
<dataarea name="cass" size="1">
<rom name="cass" size="0" status="nodump" />
</dataarea>
</part>

View file

@ -199,7 +199,7 @@ license:CC0-1.0
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="dbase2_2.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -395,7 +395,7 @@ license:CC0-1.0
</part>
<part name="e" interface="floppy_3_5">
<feature name="part_id" value="Disk E (Server Backup)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="networks_13b_f_e.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -474,7 +474,7 @@ license:CC0-1.0
<publisher>ACT</publisher>
<part name="a" interface="floppy_3_5">
<feature name="part_id" value="Disk A (Server Boot)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="networks_13b_xi_a.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -498,7 +498,7 @@ license:CC0-1.0
</part>
<part name="e" interface="floppy_3_5">
<feature name="part_id" value="Disk E (Server Backup)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="networks_13b_xi_e.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -511,7 +511,7 @@ license:CC0-1.0
<publisher>ACT</publisher>
<part name="a" interface="floppy_3_5">
<feature name="part_id" value="Disk A (Server Boot)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="point32_11_a.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -523,13 +523,13 @@ license:CC0-1.0
</part>
<part name="c" interface="floppy_3_5">
<feature name="part_id" value="Disk C (Portable/F-Series Workstation)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="point32_11_c.dsk" size="0" status="nodump"/>
</dataarea>
</part>
<part name="d" interface="floppy_3_5">
<feature name="part_id" value="Disk D (Bank Boot)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="point32_11_d.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -542,7 +542,7 @@ license:CC0-1.0
<publisher>ACT</publisher>
<part name="a" interface="floppy_3_5">
<feature name="part_id" value="Disk A (Server Boot)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="point32_12_a.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -554,19 +554,19 @@ license:CC0-1.0
</part>
<part name="c" interface="floppy_3_5">
<feature name="part_id" value="Disk C (Portable/F-Series Workstation)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="point32_12_c.dsk" size="0" status="nodump"/>
</dataarea>
</part>
<part name="d" interface="floppy_3_5">
<feature name="part_id" value="Disk D (Bank Boot)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="point32_12_d.dsk" size="0" status="nodump"/>
</dataarea>
</part>
<part name="e" interface="floppy_3_5">
<feature name="part_id" value="Disk E (Server Backup)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="point32_12_e.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -579,7 +579,7 @@ license:CC0-1.0
<publisher>ACT</publisher>
<part name="a" interface="floppy_3_5">
<feature name="part_id" value="Disk A (Server Boot)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="point32_12b_a.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -603,7 +603,7 @@ license:CC0-1.0
</part>
<part name="e" interface="floppy_3_5">
<feature name="part_id" value="Disk E (Server Backup)" />
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="point32_12b_e.dsk" size="0" status="nodump"/>
</dataarea>
</part>
@ -754,7 +754,7 @@ license:CC0-1.0
</dataarea>
</part>
<part name="flop2" interface="floppy_3_5">
<dataarea name="flop" size="0">
<dataarea name="flop" size="1">
<rom name="supercalc3_2.dsk" size="0" status="nodump"/>
</dataarea>
</part>

View file

@ -11090,7 +11090,7 @@ Right/left cursor keys select tape baud rate 1200/2400 respectively.
</dataarea>
</part>
<part name="cass" interface="msx_cass">
<dataarea name="cass" size="0">
<dataarea name="cass" size="1">
<rom name="cass" size="0" status="nodump"/>
</dataarea>
</part>

View file

@ -2755,7 +2755,7 @@ The cassette stops during the game loading
</part>
<part name="cass2" interface="oric1_cass">
<feature name="part_id" value="FACE B - ATMOS"/>
<dataarea name="cass" size="0">
<dataarea name="cass" size="1">
<rom name="Mission Impossible - Face B.tap" size="0" status="nodump"/>
</dataarea>
</part>

View file

@ -3490,7 +3490,7 @@ Thanks to DCMOTO (http://dcmoto.free.fr) for info!
</part>
<part name="cass2" interface="to_cass">
<feature name="part_id" value="Side B"/>
<dataarea name="cass" size="0">
<dataarea name="cass" size="1">
<rom name="image-et-signes-2_to7.k7" size="0" crc="00000000" status="nodump" />
</dataarea>
</part>

View file

@ -576,6 +576,8 @@ void software_list_device::internal_validity_check(validity_checker &valid)
current_length = ROMREGION_GETLENGTH(romp);
if (!data_area_map.emplace(romp->name(), current_length).second)
osd_printf_error("%s: %s part %s data area has duplicate name '%s'\n", m_filename, shortname, part.name(), romp->name());
if (current_length == 0)
osd_printf_error("%s: %s part %s data area '%s' has zero length\n", m_filename, shortname, part.name(), romp->name());
}
else if (ROMENTRY_ISFILE(romp)) // if this is a file, make sure it is properly formatted
{

View file

@ -2204,6 +2204,8 @@ void validity_checker::validate_roms(device_t &root)
current_length = ROMREGION_GETLENGTH(romp);
if (!m_region_map.emplace(fulltag, current_length).second)
osd_printf_error("Multiple ROM_REGIONs with the same tag '%s' defined\n", fulltag);
if (current_length == 0)
osd_printf_error("ROM region '%s' has zero length\n", fulltag);
}
else if (ROMENTRY_ISSYSTEM_BIOS(romp)) // If this is a system bios, make sure it is using the next available bios number
{