winecfg: Prevent crash when clearing volume serial number input.
authorJörg Höhle <hoehle@users.sourceforge.net>
Tue, 16 Dec 2008 09:29:35 +0000 (10:29 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Thu, 18 Dec 2008 13:53:55 +0000 (14:53 +0100)
programs/winecfg/drive.c
programs/winecfg/driveui.c

index 1a3671ce893676164aa82f90c78768a74bc280a2..9e6077cd312c1c714bee80ce85b00bee38bfe92f 100644 (file)
@@ -187,7 +187,7 @@ static void set_drive_serial( char letter, DWORD serial )
     HANDLE hFile;
 
     filename[0] = letter;
-    WINE_TRACE("Putting serial number of %08x into file '%s'\n", serial, filename);
+    WINE_TRACE("Putting serial number of %08X into file '%s'\n", serial, filename);
     hFile = CreateFile(filename, GENERIC_WRITE, FILE_SHARE_READ, NULL,
                        CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
     if (hFile != INVALID_HANDLE_VALUE)
index 375eccbce1c9df7d78c0fe2099faffb23982f555..b9bcd2db9b69e93064b5811125f69ae5a96df8b7 100644 (file)
@@ -520,10 +520,11 @@ static void on_edit_changed(HWND dialog, WORD id)
             char *serial;
 
             serial = get_text(dialog, id);
-            current_drive->serial = strtoul( serial, NULL, 16 );
+            current_drive->serial = serial ? strtoul( serial, NULL, 16 ) : 0;
+            HeapFree(GetProcessHeap(), 0, serial);
             current_drive->modified = TRUE;
 
-            WINE_TRACE("set serial to %08x\n", current_drive->serial);
+            WINE_TRACE("set serial to %08X\n", current_drive->serial);
 
             /* enable the apply button  */
             SendMessage(GetParent(dialog), PSM_CHANGED, (WPARAM) dialog, 0);
@@ -775,7 +776,8 @@ DriveDlgProc (HWND dialog, UINT msg, WPARAM wParam, LPARAM lParam)
                     current_drive->label = str;
 
                     str = get_textW(dialog, IDC_EDIT_SERIAL);
-                    current_drive->serial = strtoulW( str, NULL, 16 );
+                    current_drive->serial = str ? strtoulW( str, NULL, 16 ) : 0;
+                    HeapFree(GetProcessHeap(), 0, str);
                     current_drive->modified = TRUE;
 
                     /* TODO: we don't have a device at this point */