From 9b5008aa2bc1c6a6acb2c6f90d1ef8d6bad9e66a Mon Sep 17 00:00:00 2001 From: Sebastian Rasmussen Date: Wed, 11 Mar 2020 16:35:53 +0800 Subject: jbig2dec: Pass segment numbers as unsigned values to error callback. According to the JBIG2 specification segments numbers are 32 bit unsigned integer. Previously any segment numbers larger than INT32_MAX would be passed as negative numbers. Some parts of the decoder do not yet know, or do not have access to the currently decoded segment number, and this needs to be specially indicated. Therefore jbig2dec appropriates the unlikely segment number 0xffffffff to indicate an unknown segment number. This is a change of the public API. --- base/sjbig2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'base/sjbig2.c') diff --git a/base/sjbig2.c b/base/sjbig2.c index 6a573d6cb..490df7c65 100644 --- a/base/sjbig2.c +++ b/base/sjbig2.c @@ -42,7 +42,7 @@ private_st_jbig2decode_state(); /* creates a gc object for our state, defined in /* error callback for jbig2 decoder */ static void s_jbig2decode_error(void *callback_data, const char *msg, Jbig2Severity severity, - int32_t seg_idx) + uint32_t seg_idx) { s_jbig2_callback_data_t *error_data = (s_jbig2_callback_data_t *)callback_data; const char *type; @@ -62,7 +62,7 @@ s_jbig2decode_error(void *callback_data, const char *msg, Jbig2Severity severity break;; default: type = "unknown message:"; break;; } - if (seg_idx == -1) segment[0] = '\0'; + if (seg_idx == JBIG2_UNKNOWN_SEGMENT_NUMBER) segment[0] = '\0'; else gs_sprintf(segment, "(segment 0x%02x)", seg_idx); if (error_data) -- cgit v1.2.1