diff options
author | wm4 <wm4@nowhere> | 2013-07-21 20:26:56 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-07-21 23:27:31 +0200 |
commit | f2e3a498109d75d99ebd539e7c9603529128efd0 (patch) | |
tree | 323a088caba6c3b1ac1bf74696980bbbebd4efd7 | |
parent | 560738ddef94ae3df325154e7932f5fb6e97915e (diff) | |
download | mpv-f2e3a498109d75d99ebd539e7c9603529128efd0.tar.bz2 mpv-f2e3a498109d75d99ebd539e7c9603529128efd0.tar.xz |
m_option: fix memory leak on error path
-rw-r--r-- | core/m_option.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/core/m_option.c b/core/m_option.c index ff27f9bcc7..59864d93ad 100644 --- a/core/m_option.c +++ b/core/m_option.c @@ -2027,6 +2027,9 @@ static int get_obj_params(struct bstr opt_name, struct bstr name, if (r > 0 && ret) { MP_TARRAY_APPEND(NULL, args, num_args, bstrto0(NULL, fname)); MP_TARRAY_APPEND(NULL, args, num_args, bstrto0(NULL, fval)); + MP_TARRAY_APPEND(NULL, args, num_args, NULL); + MP_TARRAY_APPEND(NULL, args, num_args, NULL); + num_args -= 2; } if (!bstr_eatstart0(pstr, ":")) @@ -2035,8 +2038,6 @@ static int get_obj_params(struct bstr opt_name, struct bstr name, if (ret) { if (num_args > 0) { - for (int n = 0; n < 2; n++) - MP_TARRAY_APPEND(NULL, args, num_args, NULL); *ret = args; args = NULL; } else { @@ -2051,6 +2052,7 @@ print_help: ; r = M_OPT_EXIT - 1; exit: + free_str_list(&args); talloc_free(config); return r; } |