* fixed crash bug in MidiModel::const_iterator::operator=: copied iterator from other...
authorHans Baier <hansfbaier@googlemail.com>
Tue, 6 May 2008 22:54:06 +0000 (22:54 +0000)
committerHans Baier <hansfbaier@googlemail.com>
Tue, 6 May 2008 22:54:06 +0000 (22:54 +0000)
  the container the iterator points into is destroyed
* fixed conditional jump from uninitialised value in CanvasNote

git-svn-id: svn://localhost/ardour2/branches/3.0@3326 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/canvas-note.h
libs/ardour/midi_model.cc

index de2d0ecb9d12792b7a13657362746eeac481d4c7..84791c89ca4d39499c47dec81c651704417624b1 100644 (file)
@@ -31,15 +31,6 @@ namespace Canvas {
 
 class CanvasNote : public SimpleRect, public CanvasNoteEvent {
 public:
-       CanvasNote(
-                       MidiRegionView&                       region,
-                       Group&                                group,
-                       const boost::shared_ptr<ARDOUR::Note> note = boost::shared_ptr<ARDOUR::Note>())
-
-               : SimpleRect(group), CanvasNoteEvent(region, this, note)
-       {
-       }
-
        double x1() { return property_x1(); }
        double y1() { return property_y1(); }
        double x2() { return property_x2(); }
@@ -61,6 +52,15 @@ public:
                AbsoluteResize
        };
 
+       CanvasNote(
+                       MidiRegionView&                       region,
+                       Group&                                group,
+                       const boost::shared_ptr<ARDOUR::Note> note = boost::shared_ptr<ARDOUR::Note>())
+
+               : SimpleRect(group), CanvasNoteEvent(region, this, note), _note_state(None)
+       {
+       }
+
 protected:
        NoteState _note_state;
 
index 4990ede97899797872a85d2ae86756cf4a8f93d2..f17324e8c69b9d4cf55cfad2b828fa3b52283907 100644 (file)
@@ -260,7 +260,8 @@ MidiModel::const_iterator& MidiModel::const_iterator::operator=(const const_iter
        _locked = other._locked;
        _note_iter = other._note_iter;
        _control_iters = other._control_iters;
-       _control_iter = other._control_iter;
+       size_t index = other._control_iter - other._control_iters.begin();
+       _control_iter = _control_iters.begin() + index;
 
        assert( ! _event.owns_buffer());