diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2017-08-10 16:49:47 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2017-08-10 16:49:47 +0200 |
| commit | 0b4fef6d1901254e41ab74ed681daba477d724c3 (patch) | |
| tree | 75119bdedc3a63b96b8d82aa3a83fab00c6c7e4b /src/lib/openjp2/t2.c | |
| parent | a316f36dfc7cc4217bfce0ac6d23b47f90cf8fd9 (diff) | |
Propagate event manager down to opj_t2_encode_packet() and use it to emit an error message when the output buffer is too small
Diffstat (limited to 'src/lib/openjp2/t2.c')
| -rw-r--r-- | src/lib/openjp2/t2.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/lib/openjp2/t2.c b/src/lib/openjp2/t2.c index c8cfcc26..a5ada708 100644 --- a/src/lib/openjp2/t2.c +++ b/src/lib/openjp2/t2.c @@ -68,6 +68,7 @@ Encode a packet of a tile to a destination buffer @param p_data_written FIXME DOC @param len Length of the destination buffer @param cstr_info Codestream information structure +@param p_manager the user event manager @return */ static OPJ_BOOL opj_t2_encode_packet(OPJ_UINT32 tileno, @@ -77,7 +78,8 @@ static OPJ_BOOL opj_t2_encode_packet(OPJ_UINT32 tileno, OPJ_BYTE *dest, OPJ_UINT32 * p_data_written, OPJ_UINT32 len, - opj_codestream_info_t *cstr_info); + opj_codestream_info_t *cstr_info, + opj_event_mgr_t *p_manager); /** Decode a packet of a tile from a source buffer @@ -222,7 +224,8 @@ OPJ_BOOL opj_t2_encode_packets(opj_t2_t* p_t2, OPJ_UINT32 p_tp_num, OPJ_INT32 p_tp_pos, OPJ_UINT32 p_pino, - J2K_T2_MODE p_t2_mode) + J2K_T2_MODE p_t2_mode, + opj_event_mgr_t *p_manager) { OPJ_BYTE *l_current_data = p_dest; OPJ_UINT32 l_nb_bytes = 0; @@ -268,7 +271,9 @@ OPJ_BOOL opj_t2_encode_packets(opj_t2_t* p_t2, l_nb_bytes = 0; if (! opj_t2_encode_packet(p_tile_no, p_tile, l_tcp, l_current_pi, - l_current_data, &l_nb_bytes, p_max_len, cstr_info)) { + l_current_data, &l_nb_bytes, + p_max_len, cstr_info, + p_manager)) { opj_pi_destroy(l_pi, l_nb_pocs); return OPJ_FALSE; } @@ -306,7 +311,7 @@ OPJ_BOOL opj_t2_encode_packets(opj_t2_t* p_t2, l_nb_bytes = 0; if (! opj_t2_encode_packet(p_tile_no, p_tile, l_tcp, l_current_pi, - l_current_data, &l_nb_bytes, p_max_len, cstr_info)) { + l_current_data, &l_nb_bytes, p_max_len, cstr_info, p_manager)) { opj_pi_destroy(l_pi, l_nb_pocs); return OPJ_FALSE; } @@ -596,7 +601,8 @@ static OPJ_BOOL opj_t2_encode_packet(OPJ_UINT32 tileno, OPJ_BYTE *dest, OPJ_UINT32 * p_data_written, OPJ_UINT32 length, - opj_codestream_info_t *cstr_info) + opj_codestream_info_t *cstr_info, + opj_event_mgr_t *p_manager) { OPJ_UINT32 bandno, cblkno; OPJ_BYTE* c = dest; @@ -845,6 +851,10 @@ static OPJ_BOOL opj_t2_encode_packet(OPJ_UINT32 tileno, } if (layer->len > length) { + opj_event_msg(p_manager, EVT_ERROR, + "opj_t2_encode_packet(): only %u bytes remaining in " + "output buffer. %u needed.\n", + layer->len, length); return OPJ_FALSE; } |
