summaryrefslogtreecommitdiffstats
path: root/sub
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2012-11-15 20:22:41 +0100
committerwm4 <wm4@nowhere>2012-11-16 21:21:15 +0100
commitdd7dc2ee3d060d77dbafb3182127eb1a59c2d79f (patch)
tree0cb31fc3cd28975a11faf161f2eac6a8d1f7e7fb /sub
parent25a098fe78ad2aee0ad7e18f8d4326e5cd29aeb1 (diff)
downloadmpv-dd7dc2ee3d060d77dbafb3182127eb1a59c2d79f.tar.bz2
mpv-dd7dc2ee3d060d77dbafb3182127eb1a59c2d79f.tar.xz
subreader: replace sub_free() by talloc destructor
Makes it less annoying to free the sub_data.
Diffstat (limited to 'sub')
-rw-r--r--sub/subreader.c13
-rw-r--r--sub/subreader.h1
2 files changed, 7 insertions, 7 deletions
diff --git a/sub/subreader.c b/sub/subreader.c
index 583e719e55..99b2c6849c 100644
--- a/sub/subreader.c
+++ b/sub/subreader.c
@@ -1374,6 +1374,8 @@ const char* guess_cp(stream_t *st, const char *preferred_language, const char *f
#undef MAX_GUESS_BUFFER_SIZE
#endif
+static int sub_destroy(void *ptr);
+
sub_data* sub_read_file(char *filename, float fps, struct MPOpts *opts)
{
int utf16;
@@ -1758,7 +1760,8 @@ if ((suboverlap_enabled == 2) ||
return_sub = first;
}
if (return_sub == NULL) return NULL;
- subt_data = malloc(sizeof(sub_data));
+ subt_data = talloc_zero(NULL, sub_data);
+ talloc_set_destructor(subt_data, sub_destroy);
subt_data->filename = strdup(filename);
subt_data->sub_uses_time = uses_time;
subt_data->sub_num = sub_num;
@@ -1767,18 +1770,16 @@ if ((suboverlap_enabled == 2) ||
return subt_data;
}
-void sub_free( sub_data * subd )
+static int sub_destroy(void *ptr)
{
+ sub_data *subd = ptr;
int i, j;
-
- if ( !subd ) return;
-
for (i = 0; i < subd->sub_num; i++)
for (j = 0; j < subd->subtitles[i].lines; j++)
free( subd->subtitles[i].text[j] );
free( subd->subtitles );
free( subd->filename );
- free( subd );
+ return 0;
}
#define MAX_SUBLINE 512
diff --git a/sub/subreader.h b/sub/subreader.h
index db84fdd9a8..4584f2366a 100644
--- a/sub/subreader.h
+++ b/sub/subreader.h
@@ -91,7 +91,6 @@ void subcp_close (void); /* for demux_ogg.c */
const char* guess_buffer_cp(unsigned char* buffer, int buflen, const char *preferred_language, const char *fallback);
const char* guess_cp(struct stream *st, const char *preferred_language, const char *fallback);
#endif
-void sub_free( sub_data * subd );
struct MPContext;
void find_sub(struct MPContext *mpctx, sub_data* subd,int key);
void step_sub(sub_data *subd, float pts, int movement);