X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBuffer.cpp;h=1eaa6ac224b201a172bbe3f063f470252d4c52d7;hb=ecdeffb52b1dad2f56e0e4210d0a040e807e2caf;hp=9dd2a25c939c087eae054513198b54fef344ddfb;hpb=8ec3e3283a7384215afede4b6177852d338d708a;p=lyx.git diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 9dd2a25c93..1eaa6ac224 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -1300,12 +1300,15 @@ bool Buffer::save() const // we first write the file to a new name, then move it to its // proper location once that has been done successfully. that // way we preserve the original file if something goes wrong. - TempFile tempfile(fileName().onlyPath(), "tmpXXXXXX.lyx"); + string const justname = fileName().onlyFileNameWithoutExt(); + boost::scoped_ptr + tempfile(new TempFile(fileName().onlyPath(), + justname + "-XXXXXX.lyx")); bool const symlink = fileName().isSymLink(); if (!symlink) - tempfile.setAutoRemove(false); + tempfile->setAutoRemove(false); - FileName savefile(tempfile.name()); + FileName savefile(tempfile->name()); LYXERR(Debug::FILES, "Saving to " << savefile.absFileName()); if (!writeFile(savefile)) return false; @@ -1339,6 +1342,10 @@ bool Buffer::save() const } } + // Destroy tempfile since it keeps the file locked on windows (bug 9234) + // Only do this if tempfile is not in autoremove mode + if (!symlink) + tempfile.reset(); // If we have no symlink, we can simply rename the temp file. // Otherwise, we need to copy it so the symlink stays intact. if (made_backup && symlink ? savefile.copyTo(fileName(), true) : @@ -1578,13 +1585,12 @@ bool Buffer::makeLaTeXFile(FileName const & fname, writeLaTeXSource(os, original_path, runparams, output); } catch (EncodingException const & e) { - odocstringstream ods; - ods.put(e.failed_char); + docstring const failed(1, e.failed_char); ostringstream oss; oss << "0x" << hex << e.failed_char << dec; docstring msg = bformat(_("Could not find LaTeX command for character '%1$s'" " (code point %2$s)"), - ods.str(), from_utf8(oss.str())); + failed, from_utf8(oss.str())); errorList.push_back(ErrorItem(msg, _("Some characters of your document are probably not " "representable in the chosen encoding.\n" "Changing the document encoding to utf8 could help."), @@ -3982,7 +3988,7 @@ Buffer::ExportStatus Buffer::doExport(string const & target, bool put_in_tempdir Graph::EdgePath::const_iterator it = path.begin(); Graph::EdgePath::const_iterator en = path.end(); for (; it != en; ++it) - if (theConverters().get(*it).nice) { + if (theConverters().get(*it).nice()) { need_nice_file = true; break; } @@ -4177,6 +4183,7 @@ Buffer::ExportStatus Buffer::preview(string const & format) const return preview(format, update_unincluded); } + Buffer::ExportStatus Buffer::preview(string const & format, bool includeall) const { MarkAsExporting exporting(this);