summaryrefslogtreecommitdiff
path: root/src/lib/openjp2/cio.c
diff options
context:
space:
mode:
authorMathieu Malaterre <mathieu.malaterre@gmail.com>2014-03-07 09:58:32 +0000
committerMathieu Malaterre <mathieu.malaterre@gmail.com>2014-03-07 09:58:32 +0000
commit048c8302fe83c68e8eb115118fd69ea35226224a (patch)
treefc3799269bb60db1ba0d19395900dcedee41bb74 /src/lib/openjp2/cio.c
parenta7b051b172b7d8d1171729732e5b29aa80600d08 (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.c18
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)