summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/imagedev
diff options
context:
space:
mode:
author Oliver Stöneberg <firewave@users.noreply.github.com>2018-01-12 15:33:14 +0100
committer Vas Crabb <cuavas@users.noreply.github.com>2018-01-13 01:33:14 +1100
commit45854ff96c87baf0c5be3b5bf46fbdb28831aeb4 (patch)
treea01ee7ffccfb72ccd92d9ed50a541bf104ae6f99 /src/devices/imagedev
parent71c0ae310b4ffee29de916e48e0c9850ee308cfb (diff)
Some legacy floppy fixes and cleanups (#3047)
* thomflop.cpp: removed usage of floppy_get_drive() (nw) * flopdrv.cpp: got rid of bogus default drive in lookup functions (nw) * flopdrv.cpp: avoid some potential nullptr dereferences (nw) * flopdrv.cpp: made floppy_get_drive() internal (nw)
Diffstat (limited to 'src/devices/imagedev')
-rw-r--r--src/devices/imagedev/flopdrv.cpp12
-rw-r--r--src/devices/imagedev/flopdrv.h1
2 files changed, 6 insertions, 7 deletions
diff --git a/src/devices/imagedev/flopdrv.cpp b/src/devices/imagedev/flopdrv.cpp
index 38f21d7dd76..cc8f693ca84 100644
--- a/src/devices/imagedev/flopdrv.cpp
+++ b/src/devices/imagedev/flopdrv.cpp
@@ -498,7 +498,7 @@ legacy_floppy_image_device *floppy_get_device_by_type(running_machine &machine,i
int cnt = 0;
for (i=0;i<4;i++) {
legacy_floppy_image_device *disk = floppy_get_device(machine,i);
- if (disk->floppy_get_drive_type()==ftype) {
+ if (disk && disk->floppy_get_drive_type()==ftype) {
if (cnt==drive) {
return disk;
}
@@ -508,9 +508,9 @@ legacy_floppy_image_device *floppy_get_device_by_type(running_machine &machine,i
return nullptr;
}
-int floppy_get_drive(device_t *image)
+static int floppy_get_drive(device_t *image)
{
- int drive =0;
+ int drive = -1;
if (strcmp(image->tag(), ":" FLOPPY_0) == 0) drive = 0;
if (strcmp(image->tag(), ":" FLOPPY_1) == 0) drive = 1;
if (strcmp(image->tag(), ":" FLOPPY_2) == 0) drive = 2;
@@ -523,14 +523,14 @@ int floppy_get_drive_by_type(legacy_floppy_image_device *image,int ftype)
int i,drive =0;
for (i=0;i<4;i++) {
legacy_floppy_image_device *disk = floppy_get_device(image->machine(),i);
- if (disk->floppy_get_drive_type()==ftype) {
+ if (disk && disk->floppy_get_drive_type()==ftype) {
if (image==disk) {
return drive;
}
drive++;
}
}
- return drive;
+ return -1;
}
int floppy_get_count(running_machine &machine)
@@ -718,7 +718,7 @@ legacy_floppy_image_device::legacy_floppy_image_device(const machine_config &mco
m_wpt(0),
m_rdy(0),
m_dskchg(0),
- m_drive_id(0),
+ m_drive_id(-1),
m_active(0),
m_config(nullptr),
m_flags(0),
diff --git a/src/devices/imagedev/flopdrv.h b/src/devices/imagedev/flopdrv.h
index da4eb864900..695bd81e6e6 100644
--- a/src/devices/imagedev/flopdrv.h
+++ b/src/devices/imagedev/flopdrv.h
@@ -233,7 +233,6 @@ DECLARE_DEVICE_TYPE(LEGACY_FLOPPY, legacy_floppy_image_device)
legacy_floppy_image_device *floppy_get_device(running_machine &machine,int drive);
legacy_floppy_image_device *floppy_get_device_by_type(running_machine &machine,int ftype,int drive);
-int floppy_get_drive(device_t *image);
int floppy_get_drive_by_type(legacy_floppy_image_device *image,int ftype);
int floppy_get_count(running_machine &machine);