diff options
author | Sampo Savolainen <v2@iki.fi> | 2008-01-14 17:49:30 +0000 |
---|---|---|
committer | Sampo Savolainen <v2@iki.fi> | 2008-01-14 17:49:30 +0000 |
commit | cc607b9fb9d0f14ec2fe00366da3c7574874d06f (patch) | |
tree | 93d9f76365fab73d560583030ed8f012499da32d /libs | |
parent | 22662f9dde7bb8289bb6de09690a4da8308f6f76 (diff) |
Make ardour not crash if a region state cannot be loaded (for example
due to a missing source descriptor in the XML).
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2913 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/session.cc | 4 | ||||
-rw-r--r-- | libs/ardour/session_state.cc | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index e2a59eeaea..29995c6676 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2571,7 +2571,9 @@ Session::add_region (boost::shared_ptr<Region> region) { Glib::Mutex::Lock lm (region_lock); - if ((ar = boost::dynamic_pointer_cast<AudioRegion> (region)) != 0) { + if (region == 0) { + error << _("Session::add_region() ignored a null region. Warning: you might have lost a region.") << endmsg; + } else if ((ar = boost::dynamic_pointer_cast<AudioRegion> (region)) != 0) { AudioRegionList::iterator x; diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index bcdae0c269..20f2e06d84 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -1391,7 +1391,14 @@ Session::load_regions (const XMLNode& node) for (niter = nlist.begin(); niter != nlist.end(); ++niter) { if ((region = XMLRegionFactory (**niter, false)) == 0) { - error << _("Session: cannot create Region from XML description.") << endmsg; + error << _("Session: cannot create Region from XML description."); + const XMLProperty *name = (**niter).property("name"); + + if (name) { + error << " " << string_compose (_("Can not load state for region '%1'"), name->value()); + } + + error << endmsg; } } |