Fix potential crash if maybe_add_text() fails.
[dcpomatic.git] / src / lib / reel_writer.cc
index 0ea4d1563e3061a5866b2ab3a13cfa92506f53c4..c4df58fe70830c0e362b32a5465fe8d1eb3f5788 100644 (file)
@@ -602,8 +602,10 @@ ReelWriter::create_reel (list<ReferencedReelAsset> const & refs, list<shared_ptr
                shared_ptr<dcp::ReelClosedCaptionAsset> a = maybe_add_text<dcp::ReelClosedCaptionAsset> (
                        i->second, reel_picture_asset->actual_duration(), reel, refs, fonts, _film, _period
                        );
-               a->set_annotation_text (i->first.name);
-               a->set_language (i->first.language);
+               if (a) {
+                       a->set_annotation_text (i->first.name);
+                       a->set_language (i->first.language);
+               }
        }
 
        Film::Markers markers = _film->markers ();
@@ -685,12 +687,12 @@ ReelWriter::write (PlayerText subs, TextType type, optional<DCPTextTrack> track,
        }
 
        if (!asset) {
-               string lang = _film->subtitle_language ();
+               vector<dcp::LanguageTag> lang = _film->subtitle_languages ();
                if (_film->interop ()) {
                        shared_ptr<dcp::InteropSubtitleAsset> s (new dcp::InteropSubtitleAsset ());
                        s->set_movie_title (_film->name ());
                        if (type == TEXT_OPEN_SUBTITLE) {
-                               s->set_language (lang.empty() ? "Unknown" : lang);
+                               s->set_language (lang.empty() ? "Unknown" : lang.front().to_string());
                        } else {
                                s->set_language (track->language);
                        }
@@ -701,7 +703,7 @@ ReelWriter::write (PlayerText subs, TextType type, optional<DCPTextTrack> track,
                        s->set_content_title_text (_film->name ());
                        s->set_metadata (mxf_metadata());
                        if (type == TEXT_OPEN_SUBTITLE && !lang.empty()) {
-                               s->set_language (lang);
+                               s->set_language (lang.front().to_string());
                        } else {
                                s->set_language (track->language);
                        }