diff options
author | Xidorn Quan <quanxunzhen@gmail.com> | 2012-12-02 15:42:31 +0800 |
---|---|---|
committer | Grigori Goronzy <greg@monster> | 2012-12-14 23:17:59 +0100 |
commit | 7e4553211048d0cdf5f23fb7532e2d619f6edccb (patch) | |
tree | dbfd45cf3489a9611da9b3f0b62956201ab6cd0f /libass/ass.c | |
parent | ba0459b2a64ee2170c4c0e084633a57ec74dbfd0 (diff) | |
download | libass-7e4553211048d0cdf5f23fb7532e2d619f6edccb.tar.bz2 libass-7e4553211048d0cdf5f23fb7532e2d619f6edccb.tar.xz |
Fix leaks when error occurs.
Diffstat (limited to 'libass/ass.c')
-rw-r--r-- | libass/ass.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libass/ass.c b/libass/ass.c index bc05d69..fdeb93c 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -988,7 +988,9 @@ static char *sub_recode(ASS_Library *library, char *data, size_t size, oleft += size; } else { ass_msg(library, MSGL_WARN, "Error recoding file"); - return NULL; + free(outbuf); + outbuf = NULL; + goto out; } } else if (clear) break; @@ -996,6 +998,7 @@ static char *sub_recode(ASS_Library *library, char *data, size_t size, outbuf[osize - oleft - 1] = 0; } +out: if (icdsc != (iconv_t) (-1)) { (void) iconv_close(icdsc); icdsc = (iconv_t) (-1); |