diff options
| author | Luc Hermitte <luc.hermitte@c-s.fr> | 2012-08-10 17:15:57 +0000 |
|---|---|---|
| committer | Luc Hermitte <luc.hermitte@c-s.fr> | 2012-08-10 17:15:57 +0000 |
| commit | de44b71b1246422419f1d904f2580e64ef90dd7a (patch) | |
| tree | ae29080aea30e1b1c8c15bce4501448f67455d07 /libopenjpeg/function_list.c | |
| parent | df70c7136d9f0de227723a488035735782583cce (diff) | |
[trunk] fix possible memory leak on realloc failure
Diffstat (limited to 'libopenjpeg/function_list.c')
| -rw-r--r-- | libopenjpeg/function_list.c | 9 |
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; |
