Browse Source

Safe saving: don't use temporary file when the destination file does not exist.

This ensures that .resx files exist when they are saved, which is required to add them to version control. Fixes forum-6459.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3058 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
98bd9a21e3
  1. 13
      src/Main/Base/Project/Src/Services/File/OpenedFile.cs

13
src/Main/Base/Project/Src/Services/File/OpenedFile.cs

@ -203,7 +203,7 @@ namespace ICSharpCode.SharpDevelop @@ -203,7 +203,7 @@ namespace ICSharpCode.SharpDevelop
if (IsUntitled)
throw new InvalidOperationException("Cannot save an untitled file to disk!");
bool safeSaving = FileService.SaveUsingTemporaryFile;
bool safeSaving = FileService.SaveUsingTemporaryFile && File.Exists(FileName);
string saveAs = safeSaving ? FileName + ".bak" : FileName;
using (FileStream fs = new FileStream(saveAs, FileMode.Create, FileAccess.Write)) {
if (currentView != null) {
@ -213,15 +213,10 @@ namespace ICSharpCode.SharpDevelop @@ -213,15 +213,10 @@ namespace ICSharpCode.SharpDevelop
}
}
if (safeSaving) {
DateTime? creationTime = null;
if (File.Exists(FileName)) {
creationTime = File.GetCreationTimeUtc(FileName);
File.Delete(FileName);
}
DateTime creationTime = File.GetCreationTimeUtc(FileName);
File.Delete(FileName);
File.Move(saveAs, FileName);
if (creationTime != null) {
File.SetCreationTimeUtc(FileName, creationTime.Value);
}
File.SetCreationTimeUtc(FileName, creationTime);
}
IsDirty = false;
}

Loading…
Cancel
Save