summaryrefslogtreecommitdiff
path: root/libs/ardour/session_command.cc
diff options
context:
space:
mode:
authorHans Fugal <hans@fugal.net>2006-08-12 23:19:56 +0000
committerHans Fugal <hans@fugal.net>2006-08-12 23:19:56 +0000
commit92ab1124809b247707515b7fb03b8c37326fd57c (patch)
treed4ce816e36c560e9f346f2fb81a6b89d1d45acb7 /libs/ardour/session_command.cc
parente0d1b7cb4bfa2b988d5fe79309e0c4b36ccafc76 (diff)
Remove -x from ardbg, fix bug in memento command factory
git-svn-id: svn://localhost/ardour2/branches/undo@814 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/session_command.cc')
-rw-r--r--libs/ardour/session_command.cc16
1 files changed, 15 insertions, 1 deletions
diff --git a/libs/ardour/session_command.cc b/libs/ardour/session_command.cc
index 8c1a4b32cf..dbe0ffccdd 100644
--- a/libs/ardour/session_command.cc
+++ b/libs/ardour/session_command.cc
@@ -24,6 +24,7 @@ Command *Session::memento_command_factory(XMLNode *n)
{
PBD::ID id;
XMLNode *before = 0, *after = 0;
+ XMLNode *child;
/* get id */
id = PBD::ID(n->property("obj_id")->value());
@@ -33,10 +34,23 @@ Command *Session::memento_command_factory(XMLNode *n)
{
before = new XMLNode(*n->children().front());
after = new XMLNode(*n->children().back());
+ child = before;
} else if (n->name() == "MementoUndoCommand")
+ {
before = new XMLNode(*n->children().front());
+ child = before;
+ }
else if (n->name() == "MementoRedoCommand")
+ {
after = new XMLNode(*n->children().front());
+ child = after;
+ }
+
+ if (!child)
+ {
+ error << _("Tried to reconstitute a MementoCommand with no contents, failing. id=") << id.to_s() << endmsg;
+ return 0;
+ }
/* create command */
@@ -59,7 +73,7 @@ Command *Session::memento_command_factory(XMLNode *n)
return new MementoCommand<TempoMap>(*_tempo_map, before, after);
else if (obj_T == "Playlist" || obj_T == "AudioPlaylist")
{
- if (Playlist *pl = playlist_by_name(before->property("name")->value()))
+ if (Playlist *pl = playlist_by_name(child->property("name")->value()))
return new MementoCommand<Playlist>(*pl, before, after);
}
else if (obj_T == "Route") // inlcudes AudioTrack