summaryrefslogtreecommitdiff
path: root/libopenjpeg/function_list.c
diff options
context:
space:
mode:
authorLuc Hermitte <luc.hermitte@c-s.fr>2012-08-10 17:15:57 +0000
committerLuc Hermitte <luc.hermitte@c-s.fr>2012-08-10 17:15:57 +0000
commitde44b71b1246422419f1d904f2580e64ef90dd7a (patch)
treeae29080aea30e1b1c8c15bce4501448f67455d07 /libopenjpeg/function_list.c
parentdf70c7136d9f0de227723a488035735782583cce (diff)
[trunk] fix possible memory leak on realloc failure
Diffstat (limited to 'libopenjpeg/function_list.c')
-rw-r--r--libopenjpeg/function_list.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/libopenjpeg/function_list.c b/libopenjpeg/function_list.c
index b3de2f4f..e20fba7f 100644
--- a/libopenjpeg/function_list.c
+++ b/libopenjpeg/function_list.c
@@ -95,15 +95,20 @@ opj_bool opj_procedure_list_add_procedure (opj_procedure_list_t * p_validation_
(p_validation_list->m_nb_max_procedures == p_validation_list->m_nb_procedures)
{
p_validation_list->m_nb_max_procedures += OPJ_VALIDATION_SIZE;
- p_validation_list->m_procedures = (opj_procedure*)opj_realloc(
+ opj_procedure * new_procedures = (opj_procedure*)opj_realloc(
p_validation_list->m_procedures,p_validation_list->m_nb_max_procedures * sizeof(opj_procedure));
if
- (! p_validation_list->m_procedures)
+ (! new_procedures)
{
+ opj_free(p_validation_list->m_procedures);
p_validation_list->m_nb_max_procedures = 0;
p_validation_list->m_nb_procedures = 0;
return OPJ_FALSE;
}
+ else
+ {
+ p_validation_list->m_procedures = new_procedures;
+ }
}
p_validation_list->m_procedures[p_validation_list->m_nb_procedures] = p_procedure;
++p_validation_list->m_nb_procedures;