commit b804e8851c33b68caa5057e809a12333741dfe2e
Author: Richard Kimberly Heck <[email protected]>
Date: Wed Jan 16 11:13:53 2019 -0500
Rename emergency file when it is kept.
Otherwise, we will ask about it again next time, when the file
may have changed. Also, if we crash again, we'll over-write that
file, which we may not want to do.
See bug #11464.
---
src/Buffer.cpp | 26 ++++++++++++++++++++++++++
1 files changed, 26 insertions(+), 0 deletions(-)
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index 6a41b98..06d3eaf 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -4770,6 +4770,32 @@ Buffer::ReadStatus Buffer::loadEmergency()
_("&Remove"), _("&Keep"));
if (del_emerg == 0)
emergencyFile.removeFile();
+ else {
+ // See bug #11464
+ FileName newname;
+ string const ename = emergencyFile.absFileName();
+ bool noname = true;
+ // Surely we can find one in 100 tries?
+ for (int i = 1; i < 100; ++i) {
+ newname.set(ename + to_string(i) + ".lyx");
+ if (!newname.exists()) {
+ noname = false;
+ break;
+ }
+ }
+ if (!noname) {
+ // renameTo returns true on success. So
inverting that
+ // will give us true if we fail.
+ noname = !emergencyFile.renameTo(newname);
+ }
+ if (noname) {
+ Alert::warning(_("Can't rename emergency
file!"),
+ _("LyX was unable to rename the
emergency file. "
+ "You should do so manually.
Otherwise, you will be"
+ "asked about it again the next time
you try to load"
+ "this file, and may over-write your
own work."));
+ }
+ }
return ReadOriginal;
}