On Wed, Aug 29, 2007 at 12:02:24PM -0400, Bennett Helm wrote:
> Start with an existing file and open in in LyX. Modify it (in LyX),
> and save it. The dialog pops up indicating that the file has been
> externally modified, asking whether you want to save anyway.
> Subsequent attempts to save the file work fine; it's only the first
> one that provide the false warning, and it does so every time.
>
> I'm guessing the problem is that Macs save information not only about
> creation and modification dates for files, but *also* for last opened
> date. So when you open a file, Mac OS then makes a change to the file
> (updating the last opened date), which LyX detects as an external
> modification. I don't know how to confirm this guess, however.
This is not a Mac problem, it is a genuine bug occurring when loading
a .lyx file having a previous format. The checksum and timestamp of the
converted (rather than original) file were being saved.
The attached patch solves the issue.
--
Enrico
Index: src/Buffer.cpp
===================================================================
--- src/Buffer.cpp (revisione 19907)
+++ src/Buffer.cpp (copia locale)
@@ -704,6 +704,12 @@
int const file_format = convert<int>(tmp_format);
//lyxerr << "format: " << file_format << endl;
+ // save the timestamp and checksum of disk file
+ if (!pimpl_->checksum_) {
+ pimpl_->timestamp_ =
fs::last_write_time(filename.toFilesystemEncoding());
+ pimpl_->checksum_ = sum(filename);
+ }
+
if (file_format != LYX_FORMAT) {
if (fromstring)
@@ -770,9 +776,6 @@
//MacroTable::localMacros().clear();
pimpl_->file_fully_loaded = true;
- // save the timestamp and checksum of disk file
- pimpl_->timestamp_ =
fs::last_write_time(filename.toFilesystemEncoding());
- pimpl_->checksum_ = sum(filename);
return success;
}