diff --git a/src/img/img/imgObject.cc b/src/img/img/imgObject.cc index ab76374f3..5901a80e2 100644 --- a/src/img/img/imgObject.cc +++ b/src/img/img/imgObject.cc @@ -1546,6 +1546,9 @@ Object::from_string (const char *str, const char *base_dir) ex.test ("]"); + } else { + // otherwise stop + break; } ex.test (";"); diff --git a/src/lay/lay/laySession.cc b/src/lay/lay/laySession.cc index 9ef4b97db..43ae4b898 100644 --- a/src/lay/lay/laySession.cc +++ b/src/lay/lay/laySession.cc @@ -265,7 +265,11 @@ Session::restore (lay::MainWindow &mw) as.reserve (vd.annotation_shapes.annotation_shapes.size ()); for (std::vector::const_iterator ad = vd.annotation_shapes.annotation_shapes.begin (); ad != vd.annotation_shapes.annotation_shapes.end (); ++ad) { db::DUserObjectBase *obj = db::DUserObjectFactory::create (ad->class_name.c_str (), ad->value_string.c_str (), ! m_base_dir.empty () ? m_base_dir.c_str () : 0); - as.insert (db::DUserObject (obj)); + if (obj) { + as.insert (db::DUserObject (obj)); + } else { + tl::warn << tl::to_string (tr ("Unable to restore session user object with unknown class: ")) << ad->class_name; + } } view->update_content ();