summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorSampo Savolainen <v2@iki.fi>2008-01-14 17:49:30 +0000
committerSampo Savolainen <v2@iki.fi>2008-01-14 17:49:30 +0000
commitcc607b9fb9d0f14ec2fe00366da3c7574874d06f (patch)
tree93d9f76365fab73d560583030ed8f012499da32d /libs
parent22662f9dde7bb8289bb6de09690a4da8308f6f76 (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.cc4
-rw-r--r--libs/ardour/session_state.cc9
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;
}
}