diff --git a/libass/ass.c b/libass/ass.c index e18a540a0d..de0dff8fe5 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -804,7 +804,7 @@ static char* sub_recode(char* data, size_t size, char* codepage) assert(codepage); { - char* cp_tmp = codepage ? strdup(codepage) : 0; + const char* cp_tmp = codepage; #ifdef HAVE_ENCA char enca_lang[3], enca_fallback[100]; if (sscanf(codepage, "enca:%2s:%99s", enca_lang, enca_fallback) == 2 @@ -816,9 +816,6 @@ static char* sub_recode(char* data, size_t size, char* codepage) mp_msg(MSGT_ASS,MSGL_V,"LIBSUB: opened iconv descriptor.\n"); } else mp_msg(MSGT_ASS,MSGL_ERR,MSGTR_LIBASS_ErrorOpeningIconvDescriptor); -#ifdef HAVE_ENCA - if (cp_tmp) free(cp_tmp); -#endif } { diff --git a/subreader.c b/subreader.c index 1a58b3231d..62b01e964e 100644 --- a/subreader.c +++ b/subreader.c @@ -1083,15 +1083,13 @@ void subcp_open (stream_t *st) char *tocp = "UTF-8"; if (sub_cp){ - char *cp_tmp = sub_cp; + const char *cp_tmp = sub_cp; #ifdef HAVE_ENCA char enca_lang[3], enca_fallback[100]; - int free_cp_tmp = 0; if (sscanf(sub_cp, "enca:%2s:%99s", enca_lang, enca_fallback) == 2 || sscanf(sub_cp, "ENCA:%2s:%99s", enca_lang, enca_fallback) == 2) { if (st && st->flags & STREAM_SEEK ) { cp_tmp = guess_cp(st, enca_lang, enca_fallback); - free_cp_tmp = 1; } else { cp_tmp = enca_fallback; if (st) @@ -1104,9 +1102,6 @@ void subcp_open (stream_t *st) sub_utf8 = 2; } else mp_msg(MSGT_SUBREADER,MSGL_ERR,"SUB: error opening iconv descriptor.\n"); -#ifdef HAVE_ENCA - if (free_cp_tmp && cp_tmp) free(cp_tmp); -#endif } } @@ -1275,13 +1270,13 @@ struct subreader { }; #ifdef HAVE_ENCA -void* guess_buffer_cp(unsigned char* buffer, int buflen, char *preferred_language, char *fallback) +const char* guess_buffer_cp(unsigned char* buffer, int buflen, char *preferred_language, const char *fallback) { const char **languages; size_t langcnt; EncaAnalyser analyser; EncaEncoding encoding; - char *detected_sub_cp = NULL; + const char *detected_sub_cp = NULL; int i; languages = enca_get_languages(&langcnt); @@ -1299,7 +1294,7 @@ void* guess_buffer_cp(unsigned char* buffer, int buflen, char *preferred_languag encoding = enca_analyse_const(analyser, buffer, buflen); tmp = enca_charset_name(encoding.charset, ENCA_NAME_STYLE_ICONV); if (tmp && encoding.charset != ENCA_CS_UNKNOWN) { - detected_sub_cp = strdup(tmp); + detected_sub_cp = tmp; mp_msg(MSGT_SUBREADER, MSGL_INFO, "ENCA detected charset: %s\n", tmp); } enca_analyser_free(analyser); @@ -1308,7 +1303,7 @@ void* guess_buffer_cp(unsigned char* buffer, int buflen, char *preferred_languag free(languages); if (!detected_sub_cp) { - detected_sub_cp = strdup(fallback); + detected_sub_cp = fallback; mp_msg(MSGT_SUBREADER, MSGL_INFO, "ENCA detection failed: fallback to %s\n", fallback); } @@ -1316,11 +1311,11 @@ void* guess_buffer_cp(unsigned char* buffer, int buflen, char *preferred_languag } #define MAX_GUESS_BUFFER_SIZE (256*1024) -void* guess_cp(stream_t *st, char *preferred_language, char *fallback) +const char* guess_cp(stream_t *st, char *preferred_language, const char *fallback) { size_t buflen; unsigned char *buffer; - char *detected_sub_cp = NULL; + const char *detected_sub_cp = NULL; buffer = malloc(MAX_GUESS_BUFFER_SIZE); buflen = stream_read(st,buffer, MAX_GUESS_BUFFER_SIZE); diff --git a/subreader.h b/subreader.h index 225761572b..ae12c4dc5c 100644 --- a/subreader.h +++ b/subreader.h @@ -74,8 +74,8 @@ struct stream_st; void subcp_open (struct stream_st *st); /* for demux_ogg.c */ void subcp_close (void); /* for demux_ogg.c */ #ifdef HAVE_ENCA -void* guess_buffer_cp(unsigned char* buffer, int buflen, char *preferred_language, char *fallback); -void* guess_cp(struct stream_st *st, char *preferred_language, char *fallback); +const char* guess_buffer_cp(unsigned char* buffer, int buflen, char *preferred_language, const char *fallback); +const char* guess_cp(struct stream_st *st, char *preferred_language, const char *fallback); #endif char ** sub_filenames(const char *path, char *fname); void list_sub_file(sub_data* subd);