diff options
| author | Mathieu Malaterre <mathieu.malaterre@gmail.com> | 2014-03-07 09:58:32 +0000 |
|---|---|---|
| committer | Mathieu Malaterre <mathieu.malaterre@gmail.com> | 2014-03-07 09:58:32 +0000 |
| commit | 048c8302fe83c68e8eb115118fd69ea35226224a (patch) | |
| tree | fc3799269bb60db1ba0d19395900dcedee41bb74 /src/lib/openjp2/cio.c | |
| parent | a7b051b172b7d8d1171729732e5b29aa80600d08 (diff) | |
[trunk] un-deprecated opj_stream_destroy API, import patch manually
In some case user still want to be able to call opj_stream_destroy.
Fixes issue 227
Diffstat (limited to 'src/lib/openjp2/cio.c')
| -rw-r--r-- | src/lib/openjp2/cio.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/src/lib/openjp2/cio.c b/src/lib/openjp2/cio.c index 57d4ccd2..f7f1bc72 100644 --- a/src/lib/openjp2/cio.c +++ b/src/lib/openjp2/cio.c @@ -189,6 +189,9 @@ void OPJ_CALLCONV opj_stream_destroy(opj_stream_t* p_stream) opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream; if (l_stream) { + if (l_stream->m_free_user_data_fn) { + l_stream->m_free_user_data_fn(l_stream->m_user_data); + } opj_free(l_stream->m_stored_data); l_stream->m_stored_data = 00; opj_free(l_stream); @@ -197,17 +200,7 @@ void OPJ_CALLCONV opj_stream_destroy(opj_stream_t* p_stream) void OPJ_CALLCONV opj_stream_destroy_v3(opj_stream_t* p_stream) { - opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream; - - if (l_stream) { - FILE *fp = (FILE*)l_stream->m_user_data; - if(fp) - fclose(fp); - - opj_free(l_stream->m_stored_data); - l_stream->m_stored_data = 00; - opj_free(l_stream); - } + opj_stream_destroy(p_stream); } void OPJ_CALLCONV opj_stream_set_read_function(opj_stream_t* p_stream, opj_stream_read_fn p_function) @@ -253,12 +246,13 @@ void OPJ_CALLCONV opj_stream_set_skip_function(opj_stream_t* p_stream, opj_strea l_stream->m_skip_fn = p_function; } -void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t* p_stream, void * p_data) +void OPJ_CALLCONV opj_stream_set_user_data(opj_stream_t* p_stream, void * p_data, opj_stream_free_user_data_fn p_function) { opj_stream_private_t* l_stream = (opj_stream_private_t*) p_stream; if (!l_stream) return; l_stream->m_user_data = p_data; + l_stream->m_free_user_data_fn = p_function; } void OPJ_CALLCONV opj_stream_set_user_data_length(opj_stream_t* p_stream, OPJ_UINT64 data_length) |
