diff --git a/src/drive.c b/src/drive.c index 1fe0ae4bda..85a15e38a3 100644 --- a/src/drive.c +++ b/src/drive.c @@ -1522,12 +1522,19 @@ BOOL MountVolume(char* drive_name, char *volume_name) { char mounted_guid[52]; char mounted_letter[27] = { 0 }; +#if defined(WINDOWS_IS_NOT_BUGGY) DWORD size; +#endif if ((drive_name == NULL) || (volume_name == NULL) || (drive_name[0] == '?') || (strncmp(volume_name, groot_name, groot_len) == 0)) return FALSE; + // Great: Windows has a *MAJOR BUG* whereas, in some circumstances, GetVolumePathNamesForVolumeName() + // can return the *WRONG* drive letter. And yes, we validated that this is *NOT* an issue like stack + // or buffer corruption and whatnot. It *IS* a Windows bug. So just drop the idea of updating the + // drive letter if already mounted and use the passed target always. +#if defined(WINDOWS_IS_NOT_BUGGY) // Windows may already have the volume mounted but under a different letter. // If that is the case, update drive_name to that letter. if ( (GetVolumePathNamesForVolumeNameA(volume_name, mounted_letter, sizeof(mounted_letter), &size)) @@ -1537,6 +1544,7 @@ BOOL MountVolume(char* drive_name, char *volume_name) drive_name[0] = mounted_letter[0]; return TRUE; } +#endif if (!SetVolumeMountPointA(drive_name, volume_name)) { if (GetLastError() == ERROR_DIR_NOT_EMPTY) { diff --git a/src/format.c b/src/format.c index 33a0ed6d89..24394d2151 100644 --- a/src/format.c +++ b/src/format.c @@ -1732,7 +1732,7 @@ DWORD WINAPI FormatThread(void* param) } if (drive_letters[0] == 0) { uprintf("No drive letter was assigned..."); - drive_name[0] = GetUnusedDriveLetter(); + drive_name[0] = GetUnusedDriveLetter(); if (drive_name[0] == 0) { uprintf("Could not find a suitable drive letter"); FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_CANT_ASSIGN_LETTER); diff --git a/src/rufus.c b/src/rufus.c index e7652755a0..45c8916d91 100755 --- a/src/rufus.c +++ b/src/rufus.c @@ -3479,12 +3479,12 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine SendMessage(hMainDialog, WM_COMMAND, IDC_LOG, 0); continue; } -#if defined(_DEBUG) +#if defined(_DEBUG) || defined(TEST) // Ctrl-T => Alternate Test mode that doesn't require a full rebuild if ((ctrl_without_focus || ((GetKeyState(VK_CONTROL) & 0x8000) && (msg.message == WM_KEYDOWN))) && (msg.wParam == 'T')) { - extern int TestChecksum(void); - TestChecksum(); + //extern int TestChecksum(void); + //TestChecksum(); continue; } #endif diff --git a/src/rufus.rc b/src/rufus.rc index db48fb86f5..5e5ea41771 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 232, 326 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Rufus 3.12.1693" +CAPTION "Rufus 3.12.1694" FONT 9, "Segoe UI Symbol", 400, 0, 0x0 BEGIN LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP @@ -395,8 +395,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,12,1693,0 - PRODUCTVERSION 3,12,1693,0 + FILEVERSION 3,12,1694,0 + PRODUCTVERSION 3,12,1694,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -414,13 +414,13 @@ BEGIN VALUE "Comments", "https://rufus.ie" VALUE "CompanyName", "Akeo Consulting" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "3.12.1693" + VALUE "FileVersion", "3.12.1694" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2020 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html" VALUE "OriginalFilename", "rufus-3.12.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "3.12.1693" + VALUE "ProductVersion", "3.12.1694" END END BLOCK "VarFileInfo"