diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index c7f5a08e45..94d853fdf7 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -1564,8 +1564,9 @@ Session::set_state (const XMLNode& node, int version) goto out; } else { try { - TempoMap::SharedPtr new_map (new TempoMap (*child, version)); - TempoMap::update (new_map); + TempoMap::SharedPtr tmap = TempoMap::write_copy (); /* get writable copy of current tempo map */ + tmap->set_state (*child, version); /* reset its state */ + TempoMap::update (tmap); /* update the global tempo map manager */ } catch (...) { goto out; }