x-file-dialog uses GetOpenFileName to get a file name. If you have a buffer that is not visiting any file, when you call save-buffer through a tool-bar button, x-file-dialog gets called. However, with GetOpenFileName, you must select an existing file. We can fix this bug by minimum change. in x-file-dialog (defined in win32fns.c) change the line: file_opened = GetOpenFileName (file_details); to if (!NILP (mustmatch)) { file_opened = GetOpenFileName (file_details); } else { file_opened = GetSaveFileName (file_details); }