@@ -1742,6 +1742,12 @@ void save_sub_track(struct matroska_ctx *mkv_ctx, struct matroska_sub_track *tra
17421742 free (filename );
17431743 }
17441744
1745+ if (desc < 0 )
1746+ {
1747+ mprint ("\nError: Cannot create output file for subtitle track\n" );
1748+ return ;
1749+ }
1750+
17451751 if (track -> header != NULL )
17461752 write_wrapped (desc , track -> header , strlen (track -> header ));
17471753
@@ -1795,7 +1801,7 @@ void save_sub_track(struct matroska_ctx *mkv_ctx, struct matroska_sub_track *tra
17951801
17961802 write_wrapped (desc , timestamp_start , strlen (timestamp_start ));
17971803 write_wrapped (desc , " --> " , 5 );
1798- write_wrapped (desc , timestamp_end , strlen (timestamp_start ));
1804+ write_wrapped (desc , timestamp_end , strlen (timestamp_end ));
17991805
18001806 // writing cue settings list
18011807 if (blockaddition != NULL )
@@ -1836,7 +1842,7 @@ void save_sub_track(struct matroska_ctx *mkv_ctx, struct matroska_sub_track *tra
18361842 write_wrapped (desc , "\n" , 1 );
18371843 write_wrapped (desc , timestamp_start , strlen (timestamp_start ));
18381844 write_wrapped (desc , " --> " , 5 );
1839- write_wrapped (desc , timestamp_end , strlen (timestamp_start ));
1845+ write_wrapped (desc , timestamp_end , strlen (timestamp_end ));
18401846 write_wrapped (desc , "\n" , 1 );
18411847 int size = 0 ;
18421848 while (* (sentence -> text + size ) == '\n' || * (sentence -> text + size ) == '\r' )
@@ -1866,7 +1872,7 @@ void save_sub_track(struct matroska_ctx *mkv_ctx, struct matroska_sub_track *tra
18661872 write_wrapped (desc , "Dialogue: Marked=0," , strlen ("Dialogue: Marked=0," ));
18671873 write_wrapped (desc , timestamp_start , strlen (timestamp_start ));
18681874 write_wrapped (desc , "," , 1 );
1869- write_wrapped (desc , timestamp_end , strlen (timestamp_start ));
1875+ write_wrapped (desc , timestamp_end , strlen (timestamp_end ));
18701876 write_wrapped (desc , "," , 1 );
18711877 char * text = ass_ssa_sentence_erase_read_order (sentence -> text );
18721878 char * text_to_free = text ; // Save original pointer for freeing
@@ -1880,6 +1886,9 @@ void save_sub_track(struct matroska_ctx *mkv_ctx, struct matroska_sub_track *tra
18801886 free (timestamp_end );
18811887 }
18821888 }
1889+
1890+ if (desc != 1 )
1891+ close (desc );
18831892}
18841893
18851894void free_sub_track (struct matroska_sub_track * track )
0 commit comments