- // read bookmarks
- // id, pos, file\n
- unsigned int id;
- pos_type pos;
- string fname;
- istringstream itmp(tmp);
- itmp >> id;
- itmp.ignore(2); // ignore ", "
- itmp >> pos;
- itmp.ignore(2); // ignore ", "
- itmp >> fname;
- // only load valid bookmarks
- if (bookmarks.size() < max_bookmarks && fs::exists(fname))
- bookmarks.push_back(Bookmark(fname, id, pos));
+ if (tmp == "" || tmp[0] == '#' || tmp[0] == ' ')
+ continue;
+
+ try {
+ // read bookmarks
+ // pit, pos, file\n
+ pit_type pit;
+ pos_type pos;
+ string fname;
+ istringstream itmp(tmp);
+ itmp >> pit;
+ itmp.ignore(2); // ignore ", "
+ itmp >> pos;
+ itmp.ignore(2); // ignore ", "
+ getline(itmp, fname);
+ if (!absolutePath(fname))
+ continue;
+ FileName const file(fname);
+ // only load valid bookmarks
+ if (fs::exists(file.toFilesystemEncoding()) &&
+ !fs::is_directory(file.toFilesystemEncoding()) &&
+ bookmarks.size() < max_bookmarks)
+ bookmarks.push_back(Bookmark(file, pit, 0, pos));
+ else
+ lyxerr[Debug::INIT] << "LyX: Warning: Ignore bookmark of file: " << fname << endl;
+ } catch (...) {
+ lyxerr[Debug::INIT] << "LyX: Warning: unknown Bookmark info: " << tmp << endl;
+ }