diff options
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 |
commit | 45854ff96c87baf0c5be3b5bf46fbdb28831aeb4 (patch) | |
tree | a01ee7ffccfb72ccd92d9ed50a541bf104ae6f99 /src/devices/imagedev | |
parent | 71c0ae310b4ffee29de916e48e0c9850ee308cfb (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.cpp | 12 | ||||
-rw-r--r-- | src/devices/imagedev/flopdrv.h | 1 |
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); |