summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-07-21 20:26:56 +0200
committerwm4 <wm4@nowhere>2013-07-21 23:27:31 +0200
commitf2e3a498109d75d99ebd539e7c9603529128efd0 (patch)
tree323a088caba6c3b1ac1bf74696980bbbebd4efd7
parent560738ddef94ae3df325154e7932f5fb6e97915e (diff)
downloadmpv-f2e3a498109d75d99ebd539e7c9603529128efd0.tar.bz2
mpv-f2e3a498109d75d99ebd539e7c9603529128efd0.tar.xz
m_option: fix memory leak on error path
-rw-r--r--core/m_option.c6
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;
}