diff --git a/src/Buffer.cpp b/src/Buffer.cpp index b531127c9c..7bc75e4c60 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -1285,10 +1285,13 @@ bool Buffer::save() const // proper location once that has been done successfully. that // way we preserve the original file if something goes wrong. string const savepath = fileName().onlyPath().absFileName(); - string savename = "tmp-" + fileName().onlyFileName(); + int fnum = 1; + string const fname = fileName().onlyFileName(); + string savename = "tmp-" + convert(fnum) + "-" + fname; FileName savefile(addName(savepath, savename)); while (savefile.exists()) { - if (savefile.absFileName().size() > 1024) { + // surely that is enough tries? + if (fnum > 100) { Alert::error(_("Write failure"), bformat(_("Cannot find temporary filename for:\n %1$s.\n" "Even %2$s exists!"), @@ -1296,7 +1299,8 @@ bool Buffer::save() const from_utf8(savefile.absFileName()))); return false; } - savename = "tmp-" + savename; + fnum += 1; + savename = "tmp-" + convert(fnum) + "-" + fname; savefile.set(addName(savepath, savename)); }