summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2012-04-03 04:03:19 +0000
committerNanang Izzuddin <nanang@teluu.com>2012-04-03 04:03:19 +0000
commit4eb21a6cf9e932009b730ea3e9fc397274ab81fc (patch)
tree682c39cd43519937fd49ed26e2102e3ee7c45f4a
parent7995f3f5993aebfd8fbb442f2a2e2c78afafdfb6 (diff)
Re #1453: fixed memory leak in pjmedia_vid_codec_mgr_set_default_param() caused by unreleased old pool when the new codec param is not NULL (thanks Faba Aa for the report).
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4008 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/src/pjmedia/vid_codec.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/pjmedia/src/pjmedia/vid_codec.c b/pjmedia/src/pjmedia/vid_codec.c
index f46033e2..93690a29 100644
--- a/pjmedia/src/pjmedia/vid_codec.c
+++ b/pjmedia/src/pjmedia/vid_codec.c
@@ -722,12 +722,20 @@ PJ_DEF(pj_status_t) pjmedia_vid_codec_mgr_set_default_param(
/* Update codec default param */
p->param = pjmedia_vid_codec_param_clone(pool, param);
- if (!p)
+ if (!p->param)
return PJ_EINVAL;
+
codec_desc->def_param = p;
pj_mutex_unlock(mgr->mutex);
+ /* Release old pool at the very end, as application tends to apply changes
+ * to the existing/old codec param fetched using
+ * pjmedia_vid_codec_mgr_get_default_param() which doesn't do deep clone.
+ */
+ if (old_pool)
+ pj_pool_release(old_pool);
+
return PJ_SUCCESS;
}