Fix crash on too-early update of closed caption dialog.
authorCarl Hetherington <cth@carlh.net>
Thu, 30 Jul 2020 23:04:43 +0000 (01:04 +0200)
committerCarl Hetherington <cth@carlh.net>
Thu, 30 Jul 2020 23:04:43 +0000 (01:04 +0200)
src/wx/closed_captions_dialog.cc

index 625652b8c30d2a4dc6dde2326b6ea8b0cfd43134..4519c4b7cdd4b0fbc1398d1f32fad7c6ed7341ca 100644 (file)
@@ -165,22 +165,23 @@ ClosedCaptionsDialog::update ()
        if (!_current && !_tracks.empty()) {
                /* We have no current one: get another */
                shared_ptr<Butler> butler = _butler.lock ();
-               DCPOMATIC_ASSERT (butler);
                DCPOMATIC_ASSERT (_track->GetSelection() >= 0);
                DCPOMATIC_ASSERT (_track->GetSelection() < int(_tracks.size()));
                DCPTextTrack track = _tracks[_track->GetSelection()];
-               while (true) {
-                       optional<TextRingBuffers::Data> d = butler->get_closed_caption ();
-                       if (!d) {
-                               break;
-                       }
-                       if (d->track == track) {
-                               _current = d;
-                               break;
+               if (butler) {
+                       while (true) {
+                               optional<TextRingBuffers::Data> d = butler->get_closed_caption ();
+                               if (!d) {
+                                       break;
+                               }
+                               if (d->track == track) {
+                                       _current = d;
+                                       break;
+                               }
                        }
-               }
 
-               _current_in_lines = false;
+                       _current_in_lines = false;
+               }
        }
 
        if (_current && _current->period.contains(time)) {