From 658909e4168c6e5faef6154bb9217960d0642fc1 Mon Sep 17 00:00:00 2001 From: OBattler Date: Wed, 26 Jul 2017 15:02:03 +0200 Subject: [PATCH] Fixed multiple bugs. --- src/WIN/win.c | 2 +- src/WIN/win_settings.c | 9 ++++----- src/disc_86f.c | 15 +++++++++++++++ src/disc_fdi.c | 4 ++++ src/disc_imd.c | 5 +++++ src/disc_img.c | 7 +++++++ src/disc_td0.c | 5 +++++ 7 files changed, 41 insertions(+), 6 deletions(-) diff --git a/src/WIN/win.c b/src/WIN/win.c index 66c20625c..d34465997 100644 --- a/src/WIN/win.c +++ b/src/WIN/win.c @@ -793,7 +793,7 @@ void create_floppy_tip(int part) } else { - _swprintf(tempTip, win_language_get_string_from_id(2179), drive + 1, wtext, discfns[drive]); + _swprintf(tempTip, win_language_get_string_from_id(IDS_2158), drive + 1, wtext, discfns[drive]); } if (sbTips[part] != NULL) diff --git a/src/WIN/win_settings.c b/src/WIN/win_settings.c index 32c7016b4..781a73e23 100644 --- a/src/WIN/win_settings.c +++ b/src/WIN/win_settings.c @@ -2500,7 +2500,6 @@ static BOOL CALLBACK win_settings_hard_disks_add_proc(HWND hdlg, UINT message, W char *big_buf; int b = 0; uint64_t r = 0; - int j = 0; switch (message) { @@ -2828,7 +2827,7 @@ hdd_add_file_open_error: } else { - for (j = 0; j < 16; j++) + for (i = 5; i < 16; i++) { if (((size % (i << 9)) == 0) && (size <= ((i * 17) << 19))) { @@ -3777,21 +3776,21 @@ static void cdrom_add_locations(HWND hdlg) h = GetDlgItem(hdlg, IDC_COMBO_CD_ID); for (i = 0; i < 16; i++) { - wsprintf(lptsTemp, win_language_get_string_from_id(2088), i); + wsprintf(lptsTemp, win_language_get_string_from_id(IDS_4098), i); SendMessage(h, CB_ADDSTRING, 0, (LPARAM) lptsTemp); } h = GetDlgItem(hdlg, IDC_COMBO_CD_LUN); for (i = 0; i < 8; i++) { - wsprintf(lptsTemp, win_language_get_string_from_id(2088), i); + wsprintf(lptsTemp, win_language_get_string_from_id(IDS_4098), i); SendMessage(h, CB_ADDSTRING, 0, (LPARAM) lptsTemp); } h = GetDlgItem(hdlg, IDC_COMBO_CD_CHANNEL_IDE); for (i = 0; i < 8; i++) { - wsprintf(lptsTemp, win_language_get_string_from_id(2169), i >> 1, i & 1); + wsprintf(lptsTemp, win_language_get_string_from_id(IDS_4097), i >> 1, i & 1); SendMessage(h, CB_ADDSTRING, 0, (LPARAM) lptsTemp); } diff --git a/src/disc_86f.c b/src/disc_86f.c index 06914a1c7..95a03e86d 100644 --- a/src/disc_86f.c +++ b/src/disc_86f.c @@ -3390,6 +3390,7 @@ void d86f_load(int drive, wchar_t *fn) { /* File is WAY too small, abort. */ fclose(d86f[drive].f); + d86f[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -3399,6 +3400,7 @@ void d86f_load(int drive, wchar_t *fn) /* File is not of the valid format, abort. */ d86f_log("86F: Unrecognized magic bytes: %08X\n", magic); fclose(d86f[drive].f); + d86f[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -3421,6 +3423,7 @@ void d86f_load(int drive, wchar_t *fn) d86f_log("86F: Unrecognized file version: %i.%02i\n", d86f[drive].version >> 8, d86f[drive].version & 0xFF); } fclose(d86f[drive].f); + d86f[drive].f = NULL; update_status_bar_icon_state(drive, 1); return; } @@ -3437,6 +3440,7 @@ void d86f_load(int drive, wchar_t *fn) { /* File too small, abort. */ fclose(d86f[drive].f); + d86f[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -3459,6 +3463,7 @@ void d86f_load(int drive, wchar_t *fn) { d86f_log("86F: CRC64 error\n"); fclose(d86f[drive].f); + d86f[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -3470,6 +3475,7 @@ void d86f_load(int drive, wchar_t *fn) memcpy(d86f[drive].original_file_name, fn, (wcslen(fn) << 1) + 2); fclose(d86f[drive].f); + d86f[drive].f = NULL; d86f[drive].f = _wfopen(temp_file_name, L"wb"); if (!d86f[drive].f) @@ -3500,6 +3506,7 @@ void d86f_load(int drive, wchar_t *fn) fclose(tf); fclose(d86f[drive].f); + d86f[drive].f = NULL; if (!temp) { @@ -3517,6 +3524,7 @@ void d86f_load(int drive, wchar_t *fn) /* Zoned disk. */ d86f_log("86F: Disk is zoned (Apple or Sony)\n"); fclose(d86f[drive].f); + d86f[drive].f = NULL; if (d86f[drive].is_compressed) { _wremove(temp_file_name); @@ -3530,6 +3538,7 @@ void d86f_load(int drive, wchar_t *fn) /* Zone type is not 0 but the disk is fixed-RPM. */ d86f_log("86F: Disk is fixed-RPM but zone type is not 0\n"); fclose(d86f[drive].f); + d86f[drive].f = NULL; if (d86f[drive].is_compressed) { _wremove(temp_file_name); @@ -3547,6 +3556,7 @@ void d86f_load(int drive, wchar_t *fn) if (writeprot[drive]) { fclose(d86f[drive].f); + d86f[drive].f = NULL; if (d86f[drive].is_compressed) { @@ -3567,6 +3577,7 @@ void d86f_load(int drive, wchar_t *fn) /* File has no track 0 side 0, abort. */ d86f_log("86F: No Track 0 side 0\n"); fclose(d86f[drive].f); + d86f[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -3576,6 +3587,7 @@ void d86f_load(int drive, wchar_t *fn) /* File is 2-sided but has no track 0 side 1, abort. */ d86f_log("86F: No Track 0 side 1\n"); fclose(d86f[drive].f); + d86f[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -3657,7 +3669,10 @@ void d86f_close(int drive) memcpy(temp_file_name, drive ? nvr_concat(L"TEMP$$$1.$$$") : nvr_concat(L"TEMP$$$0.$$$"), 26); if (d86f[drive].f) + { fclose(d86f[drive].f); + d86f[drive].f = NULL; + } if (d86f[drive].is_compressed) _wremove(temp_file_name); } diff --git a/src/disc_fdi.c b/src/disc_fdi.c index 219b29f21..e23862d65 100644 --- a/src/disc_fdi.c +++ b/src/disc_fdi.c @@ -280,6 +280,7 @@ void fdi_load(int drive, wchar_t *fn) /* This is a Japanese FDI file. */ pclog("fdi_load(): Japanese FDI file detected, redirecting to IMG loader\n"); fclose(fdi[drive].f); + fdi[drive].f = NULL; img_load(drive, fn); return; } @@ -303,7 +304,10 @@ void fdi_close(int drive) if (fdi[drive].h) fdi2raw_header_free(fdi[drive].h); if (fdi[drive].f) + { fclose(fdi[drive].f); + fdi[drive].f = NULL; + } } void fdi_seek(int drive, int track) diff --git a/src/disc_imd.c b/src/disc_imd.c index e8ca921e6..2017d1e96 100644 --- a/src/disc_imd.c +++ b/src/disc_imd.c @@ -110,6 +110,7 @@ void imd_load(int drive, wchar_t *fn) { pclog("IMD: Not a valid ImageDisk image\n"); fclose(imd[drive].f); + imd[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -131,6 +132,7 @@ void imd_load(int drive, wchar_t *fn) { pclog("IMD: No ASCII EOF character\n"); fclose(imd[drive].f); + imd[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -144,6 +146,7 @@ void imd_load(int drive, wchar_t *fn) { pclog("IMD: File ends after ASCII EOF character\n"); fclose(imd[drive].f); + imd[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -263,6 +266,7 @@ void imd_load(int drive, wchar_t *fn) /* If we can't fit the sectors with a reasonable minimum gap even at 2% slower RPM, abort. */ pclog("IMD: Unable to fit the %i sectors in a track\n", track_spt); fclose(imd[drive].f); + imd[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -301,6 +305,7 @@ void imd_close(int drive) memset(&(imd[drive].tracks[i][1]), 0, sizeof(imd_track_t)); } fclose(imd[drive].f); + imd[drive].f = NULL; } } diff --git a/src/disc_img.c b/src/disc_img.c index 2429352a0..594807dc4 100644 --- a/src/disc_img.c +++ b/src/disc_img.c @@ -358,6 +358,7 @@ void img_load(int drive, wchar_t *fn) } writeprot[drive] = 1; } + pclog("Floppy %i file pointer: %08X\n", drive, img[drive].f); if (ui_writeprot[drive]) { writeprot[drive] = 1; @@ -752,6 +753,7 @@ jump_if_fdf: { pclog("Image is bigger than can fit on an ED floppy, ejecting...\n"); fclose(img[drive].f); + img[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -814,6 +816,7 @@ jump_if_fdf: { pclog("Image is bigger than can fit on an ED floppy, ejecting...\n"); fclose(img[drive].f); + img[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -831,6 +834,7 @@ jump_if_fdf: { pclog("ERROR: Floppy image of unknown format was inserted into drive %c:!\n", drive + 0x41); fclose(img[drive].f); + img[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -863,7 +867,10 @@ void img_close(int drive) { d86f_unregister(drive); if (img[drive].f) + { fclose(img[drive].f); + img[drive].f = NULL; + } if (img[drive].disk_data) free(img[drive].disk_data); } diff --git a/src/disc_td0.c b/src/disc_td0.c index 574dde621..af9963e40 100644 --- a/src/disc_td0.c +++ b/src/disc_td0.c @@ -545,6 +545,7 @@ void td0_load(int drive, wchar_t *fn) { pclog("TD0: Not a valid Teledisk image\n"); fclose(td0[drive].f); + td0[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -560,6 +561,7 @@ void td0_load(int drive, wchar_t *fn) { pclog("TD0: Failed to initialize\n"); fclose(td0[drive].f); + td0[drive].f = NULL; memset(discfns[drive], 0, sizeof(discfns[drive])); return; } @@ -607,7 +609,10 @@ void td0_close(int drive) } if (td0[drive].f) + { fclose(td0[drive].f); + td0[drive].f = NULL; + } } uint32_t td0_get_raw_tsize(int side_flags, int slower_rpm)