summaryrefslogtreecommitdiff
path: root/libopenjpeg/openjpeg.c
diff options
context:
space:
mode:
authorMickael Savinaud <savmickael@users.noreply.github.com>2011-10-11 08:01:31 +0000
committerMickael Savinaud <savmickael@users.noreply.github.com>2011-10-11 08:01:31 +0000
commit990dd18474c667538a3e3069bcce384b92cd2641 (patch)
tree4027363c0ecd7f3ef88249474a402656b48384b3 /libopenjpeg/openjpeg.c
parentc4642d4fda91704f97dc85aa4f7513eaff1b571e (diff)
[trunk] WIP: add stream length value to read unknown marker size, backport 855 into V2 framework, correct memory leak into get_cstr_info
Diffstat (limited to 'libopenjpeg/openjpeg.c')
-rw-r--r--libopenjpeg/openjpeg.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libopenjpeg/openjpeg.c b/libopenjpeg/openjpeg.c
index bec5f225..629fc312 100644
--- a/libopenjpeg/openjpeg.c
+++ b/libopenjpeg/openjpeg.c
@@ -126,6 +126,17 @@ OPJ_UINT32 opj_read_from_file (void * p_buffer, OPJ_UINT32 p_nb_bytes, FILE * p_
return l_nb_read ? l_nb_read : -1;
}
+OPJ_UINT32 opj_get_data_length_from_file (FILE * p_file)
+{
+ OPJ_UINT32 file_length = 0;
+
+ fseek(p_file, 0, SEEK_END);
+ file_length = ftell(p_file);
+ fseek(p_file, 0, SEEK_SET);
+
+ return file_length;
+}
+
OPJ_UINT32 opj_write_from_file (void * p_buffer, OPJ_UINT32 p_nb_bytes, FILE * p_file)
{
return fwrite(p_buffer,1,p_nb_bytes,p_file);
@@ -586,6 +597,7 @@ opj_stream_t* OPJ_CALLCONV opj_stream_create_file_stream (FILE * p_file, OPJ_UIN
}
opj_stream_set_user_data(l_stream, p_file);
+ opj_stream_set_user_data_length(l_stream, opj_get_data_length_from_file(p_file));
opj_stream_set_read_function(l_stream, (opj_stream_read_fn) opj_read_from_file);
opj_stream_set_write_function(l_stream, (opj_stream_write_fn) opj_write_from_file);
opj_stream_set_skip_function(l_stream, (opj_stream_skip_fn) opj_skip_from_file);