mirror of
https://github.com/mpv-player/mpv
synced 2024-12-31 11:42:14 +00:00
strdup subtitle filename at a more appropriate place, fixing memleaks and
double frees. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15604 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
0ff088813f
commit
46630a96a9
@ -486,7 +486,7 @@ void guiLoadSubtitle( char * name )
|
||||
if ( name )
|
||||
{
|
||||
mp_msg( MSGT_GPLAYER,MSGL_INFO,MSGTR_LoadingSubtitles,name );
|
||||
subdata=sub_read_file( gstrdup( name ), guiIntfStruct.FPS );
|
||||
subdata=sub_read_file( name, guiIntfStruct.FPS );
|
||||
if ( !subdata ) mp_msg( MSGT_GPLAYER,MSGL_ERR,MSGTR_CantLoadSub,name );
|
||||
sub_name = (malloc(2 * sizeof(char*))); //when mplayer will be restarted
|
||||
sub_name[0] = strdup(name); //sub_name[0] will be read
|
||||
|
13
mencoder.c
13
mencoder.c
@ -591,8 +591,17 @@ if(sh_audio && (out_audio_codec || seek_to_sec || !sh_audio->wf || playback_spee
|
||||
if(!subdata) mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_CantLoadSub,sub_name[0]);
|
||||
} else
|
||||
if(sub_auto) { // auto load sub file ...
|
||||
subdata=sub_read_file( filename ? sub_filenames( get_path("sub/"), filename )[0]
|
||||
: "default.sub", sh_video->fps );
|
||||
char **tmp = NULL;
|
||||
int i = 0;
|
||||
if (filename) {
|
||||
char *psub = get_path( "sub/" );
|
||||
tmp = sub_filenames((psub ? psub : ""), filename);
|
||||
free(psub);
|
||||
}
|
||||
subdata=sub_read_file(tmp ? tmp[0] : "default.sub", sh_video->fps);
|
||||
while (tmp && tmp[i])
|
||||
free(tmp[i++]);
|
||||
free(tmp);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
10
mplayer.c
10
mplayer.c
@ -1914,18 +1914,18 @@ if(sh_video) {
|
||||
if(sub_auto) { // auto load sub file ...
|
||||
char *psub = get_path( "sub/" );
|
||||
char **tmp = sub_filenames((psub ? psub : ""), filename);
|
||||
char **tmp2 = tmp;
|
||||
int i = 0;
|
||||
free(psub); // release the buffer created by get_path() above
|
||||
while (*tmp2)
|
||||
add_subtitles (*tmp2++, sh_video->fps, 0);
|
||||
while (tmp[i]) {
|
||||
add_subtitles (tmp[i], sh_video->fps, 0);
|
||||
free(tmp[i++]);
|
||||
}
|
||||
free(tmp);
|
||||
if (set_of_sub_size == 0)
|
||||
{
|
||||
add_subtitles (mem_ptr=get_path("default.sub"), sh_video->fps, 1);
|
||||
free(mem_ptr); // release the buffer created by get_path()
|
||||
}
|
||||
if (set_of_sub_size > 0)
|
||||
add_subtitles (NULL, sh_video->fps, 1);
|
||||
}
|
||||
if (set_of_sub_size > 0) {
|
||||
// setup global sub numbering
|
||||
|
@ -1350,7 +1350,6 @@ void* guess_cp(FILE *fd, char *preferred_language, char *fallback)
|
||||
#endif
|
||||
|
||||
sub_data* sub_read_file (char *filename, float fps) {
|
||||
//filename is assumed to be malloc'ed, free() is used in sub_free()
|
||||
FILE *fd;
|
||||
int n_max, n_first, i, j, sub_first, sub_orig;
|
||||
subtitle *first, *second, *sub, *return_sub;
|
||||
@ -1718,7 +1717,7 @@ if ((suboverlap_enabled == 2) ||
|
||||
}
|
||||
if (return_sub == NULL) return NULL;
|
||||
subt_data = (sub_data *)malloc(sizeof(sub_data));
|
||||
subt_data->filename = filename;
|
||||
subt_data->filename = strdup(filename);
|
||||
subt_data->sub_uses_time = uses_time;
|
||||
subt_data->sub_num = sub_num;
|
||||
subt_data->sub_errs = sub_errs;
|
||||
|
Loading…
Reference in New Issue
Block a user